2012-08-29 13 views
5

Ho creato un report con alcuni dati al suo interno. Non voglio che l'utente debba fare clic sul pulsante di esportazione dei moduli ed esportare i dati in un documento word. Il file salva bene il problema è quando vado ad aprire il documento in parola è solo un mucchio di spazzatura invece del rapporto che avrebbe dovuto salvare.Come esportare direttamente in un documento word nel visualizzatore di report

pulsante My salvare assomiglia a questo:

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(); 
} 

Qualche suggerimento?

+0

quali "cose ​​non sono definite"? puoi essere specifico? – codingbiz

+0

Non ignorare i tuoi errori. Guarda * cosa * sta dicendo non è definito. Sta cercando di aiutarti ... –

+0

DropDownList1, httpContext.Current.Response.BinaryWrite (byte) non sono definiti – Robert

risposta

3

LocalReport.Render per Word esporta solo nel formato Word precedente (versione 6, credo). I nuovi formati aperti basati su XML (estensione docx) non sono supportati. Quindi avendo un'estensione docx, Word si aspetta il formato più recente, non quello vecchio, quindi interpreta tutto come spazzatura. Per inciso, cambia l'estensione docx su un documento di Word in .zip, estrai il contenuto e fai un giro intorno alle cartelle risultanti. È abbastanza interessante ciò che è ora visibile.

1

Così, dopo un sacco di lavoro su questa cosa ho trovato che cambiare questa linea:

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

a

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

correzioni mio problema. Per qualsiasi motivo, il salvataggio in un file .docx danneggia i dati.

10

So che questo è vecchio e ha già risposto (una specie di), ma mi sono imbattuto in questo problema e devi usare "WORDOPENXML" invece di "Word" nella chiamata Render. In questo modo verrà esportato in docx.

Utilizzare ListRenderingExtensions per vedere quali estensioni sono disponibili.

Problemi correlati