page1.aspx と page2.aspx の 2 つの Web ページがあります。page1 にはボタンがあります。page2 には、ローカル レポート (rdlc) があります。ボタンをクリックすると、ページ 2 が表示され、レポートが PDF および Excel ファイルにエクスポートされます。レポートが Crystal Report の場合、page2 の page_load で関数 ExportToDisk(ExportFormatType, FileName) を呼び出して、レポートを pdf/excel にエクスポートできます。しかし、今はローカル レポート (rdlc) を使用しています。どうすればそれを pdf/excel にエクスポートできるのでしょうか。
質問する
2166 次
1 に答える
0
/// <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();
}
于 2013-01-31T02:43:25.243 に答える