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