如何直接导出到报表查看器中的Word文档

Rob*_*ert 5 c# reportviewer

我创建了一个包含一些数据的报告.我不希望用户必须单击表单导出按钮并将数据导出到word文档.该文件可以很好地解决问题,当我打开文档时,它只是一堆垃圾而不是应该保存的报告.

我的保存按钮如下所示:

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();
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?

小智 10

我知道这已经过时了,已经回答了(有点),但是我偶然发现了这个问题,你需要在Render调用中使用"WORDOPENXML"代替"Word".这样它就会导出到docx.

使用ListRenderingExtensions查看可用的扩展名.


Ant*_*y K 3

LocalReport.Render for Word 仅导出为较旧的 Word 格式(我相信是版本 6)。不支持基于 XML(docx 扩展名)的较新的开放格式。因此,通过使用 docx 扩展名,Word 会期待更新的格式,而不是旧的格式,因此它将所有内容都解释为垃圾。顺便说一句,将 Word 文档的 docx 扩展名更改为 .zip,提取内容并查看生成的文件夹。现在所看到的非常有趣。