如何将SSRS报告直接导出为csv而不渲染

问题描述 投票:0回答:2

我有非常大的rdl报告,大约有50列和500,000行。报表背后的 SQL 过程只是普通的 select * from table。 执行只需几秒钟。 但是,当我想在 SSRS 中呈现该报告时,需要很长时间。

最终用户只想以 csv 格式导出该报告。 他不需要 SSRS 来呈现报告。 有没有办法将报告的默认呈现模式设置为 csv。 然后,当用户运行它时,报告会自动要求他保存为.csv,而不渲染?

sql-server csv reporting-services
2个回答
8
投票

最简单的方法是使用 URL 访问,指定

&rs:Command=render&rs:Format=csv

另一种方法是使用 API - 我想这取决于你最喜欢的方法。

请参阅 https://msdn.microsoft.com/en-us/library/ms152835.aspx


-2
投票

您可以使用 LocalReport.Render 方法直接从页面加载的报告中获取 bytes[],然后将其导出为 csv:

Warning[] warnings;
string[] streamids;
string mimeType;
string encoding;
string filenameExtension;

this.ReportViewer1.ProcessingMode = ProcessingMode.Local;
        this.ReportViewer1.LocalReport.ReportPath = 
           @"c:\Reports\Report1.rdl";
        ReportViewer1.LocalReport.DataSources.Add(
           new ReportDataSource("Test", LoadSalesData()));


byte[] bytes = reportViewer.LocalReport.Render(
    "CSV", null, out mimeType, out encoding, out filenameExtension,
    out streamids, out warnings);

Response.Buffer = true;
Response.Clear();
Response.ContentType = mimeType;
Response.AddHeader("content-disposition", "attachment; filename=" + fileName + ".csv");
Response.BinaryWrite(bytes); // create the file
Response.Flush(); 
© www.soinside.com 2019 - 2024. All rights reserved.