为ReportViewer(Rdlc)创建自定义导出到Excel

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

我有兴趣在ReportViewer中为我的报表创建一个自定义ExporttoExcel选项。这主要是因为我想要PDF格式的文件,我是通过这样做的:

 ReportViewer1.ShowExportControls = false;

因为在ReportViewer中无法禁用任何特定的导出功能(例如pdf,而不是Excel)。下面是我(稍微)修改过的代码。理想情况下,我希望类似于以前的导出选项,我可以将文件保存到任何我想要的位置。

代码可以工作,但是我需要如何修改Filestream,这样就可以不自动保存文件,而是可以提示用户,以便他们可以保存到他们想要的任何位置?

protected void btnExportExcel_Click(object sender, EventArgs e)
{
    Warning[] warnings;
    string[] streamids;
    string mimeType;
    string encoding;
    string extension;

    byte[] bytes = ReportViewer1.LocalReport.Render(
       "Excel", null, out mimeType, out encoding,
        out extension,
       out streamids, out warnings);

    FileStream fs = new FileStream(@"c:\output.xls",
       FileMode.Create);
    fs.Write(bytes, 0, bytes.Length);
    fs.Close();

}
提问于
用户回答回答于

我是根据微软在ReportViewer上的文档和谷歌的一些搜索来把这些信息汇总起来的,以防有人遇到和我类似的问题:

protected void ExportExcel_Click(object sender, EventArgs e)
{
    Warning[] warnings;
    string[] streamids;
    string mimeType;
    string encoding;
    string extension;
    string filename;

    byte[] bytes = ReportViewer1.LocalReport.Render(
       "Excel", null, out mimeType, out encoding,
        out extension,
       out streamids, out warnings);

    filename = string.Format("{0}.{1}", "ExportToExcel", "xls");
    Response.ClearHeaders();
    Response.Clear();
    Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);
    Response.ContentType = mimeType;
    Response.BinaryWrite(bytes);
    Response.Flush();
    Response.End();
}
用户回答回答于

只要提醒一下.接受的答案就会呈现为XLS文件,这是由原始海报请求的。

但是,现在也可以导出到xlsx。你必须改变format参数的Render()(...)的方法"Excel""EXCELOPENXML"...

若要获得可以调用的可能值的完整列表,请执行以下操作ReportViewer1.LocalReport.ListRenderingExtensions()

"Excel""EXCELOPENXML""IMAGE""PDF""WORD""WORDOPENXML"

我发现很难确定您需要传递哪些格式。如果你问我的话,MSDN会把这个文件写得很糟糕。

扫码关注云+社区