我们需要在不使用报表查看器的情况下直接以Word或PDF格式生成RDLC报表。这里有两个问题。
1)使用“WORDOPENXML”格式将报告呈现为docx时。 MS Word(2013)无法打开生成的文件。它给出了以下错误,
很抱歉,我们无法打开docx,因为我们发现其内容存在问题 文件已损坏,无法打开。
然而,它可以使用格式“WORD”生成为doc。然后它就可以成功打开。
但我更喜欢将它作为Docx生成。如果可行的话。
2)即使我们可以将其生成为doc文件,标题部分中的背景图像也会丢失。我们使用信头作为报告的背景图片。
将报告生成为PDF时没有问题。
以下是用于生成报告的代码。
ReportViewer reportViewer = new ReportViewer();
LocalReport localReport = new LocalReport();
localReport.ReportPath = Path.Combine(_env.ReportPath, "RollReport.rdlc");
//Set the datasource for the report
localReport.DataSources.Clear();
localReport.DataSources.Add(new ReportDataSource("Details", dtBCDetails));
localReport.DataSources.Add(new ReportDataSource("Properties", dtPropDetails));
localReport.DataSources.Add(new ReportDataSource("Insurence", dtInsurence));
localReport.DataSources.Add(new ReportDataSource("PropertyOwners", dtPropertyOwners));
//Pass parameters to the report
localReport.SetParameters(new Microsoft.Reporting.WebForms.ReportParameter[] { new Microsoft.Reporting.WebForms.ReportParameter("BodyCorporateID", bcid.ToString()) });
localReport.Refresh();
//Get the byte stream for the report rendered as PDF
byte[] bytes = localReport.Render(format, null, out mimeType, out encoding, out filenameExtension, out streamids, out warnings);
Stream repStream = new MemoryStream(bytes);
非常感谢任何帮助。 谢谢, Wijitha
答案 0 :(得分:3)
不知道,如果您仍然需要这些信息,但我至少可以帮助您使用docx ...如果使用WORDOPENXML而不是WORD作为格式参数,则会生成docx文件。