2014-12-15 2 views
2

У меня очень большой отчет rdl, около 50 столбцов и 500 000 строк. Процедура SQL, лежащая за отчетом, - это просто обычный выбор * из таблицы, для выполнения требуется несколько секунд, но когда я хочу отобразить этот отчет в SSRS, это займет слишком много времени. В любом случае, конечный пользователь хочет только экспортировать этот отчет в csv, ему не нужен SSRS для отображения отчета. Как настроить режим рендеринга по умолчанию для отчета csv, поэтому, когда пользователь запускает его, отчет автоматически попросит его сохранить в .csv без рендеринга?Как экспортировать отчет SSRS непосредственно в csv без рендеринга

Спасибо.

ответ

5

Самый простой заключается в использовании URL Access, указав &rs:command=render&rs:format=csv

Другой способ заключается в использовании API - я думаю, это зависит от того, что вы наиболее комфортно.

См https://msdn.microsoft.com/en-us/library/ms152835.aspx

0

Вы можете использовать LocalReport.Render метод, чтобы получить байт [] из отчета в загрузке страницы напрямую, а затем экспортировать его в 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(); 
Смежные вопросы