将RDLC报告呈现为word文档(作为docx,而不是doc)

时间:2014-08-29 06:30:04

标签: reporting-services rdlc

我们需要在不使用报表查看器的情况下直接以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

1 个答案:

答案 0 :(得分:3)

不知道,如果您仍然需要这些信息,但我至少可以帮助您使用docx ...如果使用WORDOPENXML而不是WORD作为格式参数,则会生成docx文件。