2012-08-29 31 views
5

He creado un informe con algunos datos. No quiero que el usuario tenga que hacer clic en el botón exportar formularios y exportar los datos a un documento de Word. El archivo guarda bien el problema es cuando voy a abrir el documento en word es simplemente un montón de basura en lugar del informe que se suponía que iba a guardar.Cómo exportar directamente a un documento de Word en el visor de informes

botón para guardar mi se parece a esto:

SaveFileDialog saveFileDialog = new SaveFileDialog(); 
saveFileDialog.InitialDirectory = @“C:\”; 
saveFileDialog.RestoreDirectory = true; 
savefileDialog.Title = “Browse Text Files”; 
saveFileDialog.DefaultExt = “docx”; 

saveFileDialog.Filter = “Word Doc (*.docx)|*.docx|PDF (*.pdf)| *.pdf”; 
saveFileDialog.checkFileExists = false; 
saveFileDialog.CheckPathExists = true; 

Warning[] warnings; 
string[] streams; 
string mimeType; 
string encoding; 
string extension; 

byte[] bytes = reportViewer1.LocalReport.Render(“Word”, null, out mimeType, out encoding, out extension, out streams, out warnings); 

if (saveFileDialog.ShowDialog() == DialogResult.OK) 
{ 
var filename = saveFileDialog.FileName; 
System.IO.FileStream file = new FileStream(filename, FileMode.Create); 
file.Write(bytes, 0, bytes.length); 
file.close(); 
} 

¿Alguna sugerencia?

+0

¿Qué "cosas no están definidas"? puedes ser específico? – codingbiz

+0

No ignore sus errores. Mira * qué * está diciendo que no está definido. Está intentando ayudarte ... –

+0

DropDownList1, httpContext.Current.Response.BinaryWrite (bytes) no están definidos – Robert

Respuesta

3

El LocalReport.Render para Word solo exporta al formato anterior de Word (versión 6, creo). Los nuevos formatos abiertos basados ​​en XML (extensión docx) no son compatibles. Entonces al tener una extensión de docx, Word espera el formato más nuevo, no el anterior, por lo que interpreta todo como basura. Como un aparte, cambie la extensión de docx en un documento de Word en .zip, extraiga el contenido y pique alrededor de las carpetas resultantes. Es bastante interesante lo que ahora es visible.

1

Así que después de un montón de trabajo en esta cosa que me pareció que la modificación de esta línea:

saveFileDialog.Filter = “Word Doc (*.docx)|*.docx|PDF (*.pdf)| *.pdf”; 

a

saveFileDialog.Filter = “Word Doc (*.doc)|*.doc|PDF (*.pdf)| *.pdf”; 

correcciones de mi problema. Por alguna razón, guardar en un archivo .docx corrompe los datos.

10

Sé que esto es viejo y ya se ha respondido (más o menos), pero he tropezado con este problema y debe usar "WORDOPENXML" en lugar de "Palabra" en la llamada Render. De esta forma se exportará a docx.

Use ListRenderingExtensions para ver qué extensiones están disponibles.

Cuestiones relacionadas