我有非常大的rdl报告,大约50列和500,000行。报告后面的SQL过程只是普通的select * from table。执行只需几秒钟。但是,当我想在SSRS中呈现该报告时,它需要太长时间。
最终用户只想在csv中导出该报告。他不需要SSRS来呈现报告。有没有办法将报告的默认呈现模式设置为csv。然后,当用户运行它时,报告会自动要求他保存在.csv中,而不进行渲染?
答案 0 :(得分:5)
最简单的方法是使用URL访问权限,指定&rs:command=render&rs:format=csv
另一种方法是使用API - 我想这取决于你最熟悉的是什么。
答案 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();