2012-11-08 92 views
0

我有两个网页,page1.aspx和page2.aspx。在页面1中,有一个按钮;在第2页中,有一个本地报告(rdlc)。当我点击按钮时,它会调出page2,并将报告导出为pdf和excel文件。如果报表是Crystal Report,则可以在page2的page_load中调用ExportToDisk(ExportFormatType,FileName)函数将报表导出到pdf/excel。但是现在我正在使用本地报告(rdlc),我想知道如何将它导出到pdf/excel。如何将本地报告导出为pdf和excel文件?

回答

0

http://weblogs.asp.net/rajbk/archive/2006/03/02/How-to-render-client-report-definition-files-_28002E00_rdlc_2900_-directly-to-the-Response-stream-without-preview.aspx

/// <summary> 
/// References: 
/// </summary> 
private void RenderReport() { 
    LocalReport localReport = new LocalReport(); 
    localReport.ReportPath = Server.MapPath("~/Report.rdlc"); 

    //A method that returns a collection for our report 
    //Note: A report can have multiple data sources 
    List<Employee> employeeCollection = GetData(); 

    //Give the collection a name (EmployeeCollection) so that we can reference it in our report designer 
    ReportDataSource reportDataSource = new ReportDataSource("EmployeeCollection", employeeCollection); 
    localReport.DataSources.Add(reportDataSource); 

    string reportType = "PDF"; 
    string mimeType; 
    string encoding; 
    string fileNameExtension; 

    //The DeviceInfo settings should be changed based on the reportType 
    //http://msdn2.microsoft.com/en-us/library/ms155397.aspx 
    string deviceInfo = 
    "<DeviceInfo>" + 
    " <OutputFormat>PDF</OutputFormat>" + 
    " <PageWidth>8.5in</PageWidth>" + 
    " <PageHeight>11in</PageHeight>" + 
    " <MarginTop>0.5in</MarginTop>" + 
    " <MarginLeft>1in</MarginLeft>" + 
    " <MarginRight>1in</MarginRight>" + 
    " <MarginBottom>0.5in</MarginBottom>" + 
    "</DeviceInfo>"; 

    Warning[] warnings; 
    string[] streams; 
    byte[] renderedBytes; 

    //Render the report 
    renderedBytes = localReport.Render(
     reportType, 
     deviceInfo, 
     out mimeType, 
     out encoding, 
     out fileNameExtension, 
     out streams, 
     out warnings); 

    //Clear the response stream and write the bytes to the outputstream 
    //Set content-disposition to "attachment" so that user is prompted to take an action 
    //on the file (open or save) 
    Response.Clear(); 
    Response.ContentType = mimeType; 
    Response.AddHeader("content-disposition", "attachment; filename=foo." + fileNameExtension); 
    Response.BinaryWrite(renderedBytes); 
    Response.End(); 

} 
+0

http://weblogs.asp.net/rajbk/How-to-render-client-report-definition-files-_28002E00_rdlc_2900_-directly-to-the-Response-stream-without -preview *** not found *** –

+0

对不起,我试图记住这是什么契约工作,即使在...我没有内存问题,但它将取决于数据。 –

相关问题