如何直接导出到Word文档中的报表查看器(How do I export directly to a

2019-09-21 21:42发布

我已创建了它的一些数据的报告。 我不希望用户必须点击表格导出按钮和数据导出到Word文档。 该文件保存精美的问题是,当我走在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();
}

有什么建议么?

Answer 1:

对于Word中的LocalReport.Render只出口到旧的Word格式(第6版,我相信)。 不支持基于XML(可扩展DOCX)较新的,开放的格式。 因此,由具有的docx扩展的Word期待的新的格式,而不是旧的,所以它解释一切,垃圾。 顺便说一句,更改Word文档的docx扩展压缩成.zip,提取内容,并有导致夹周围戳。 这是很有意思的是现在可见。



Answer 2:

我知道这是旧的,已经回答了(差不多),但我无意中发现了这个问题,你需要在渲染调用中使用“WORDOPENXML”而不是“道”。 通过这种方式,将出口到DOCX。

使用ListRenderingExtensions,看看有什么扩展可用。



Answer 3:

所以这件事情上工作了很多后,我发现,改变这一行:

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

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

解决我的问题。 无论出于何种原因,保存到一个.docx文件破坏的数据。



文章来源: How do I export directly to a word document in report viewer