如何在不渲染的情况下将SSRS报告直接导出到csv

时间:2014-12-15 11:26:07

标签: sql-server csv reporting-services

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

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

2 个答案:

答案 0 :(得分:5)

最简单的方法是使用URL访问权限,指定&rs:command=render&rs:format=csv

另一种方法是使用API​​ - 我想这取决于你最熟悉的是什么。

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

答案 1 :(得分:0)

您可以使用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();