其實如果是在windows 的表單中,水晶報表的Crystalreportviewer本身提供了匯出功能,所以可以不需要編寫任何代碼。
但是在asp.net中要實現水晶報表的匯出功能則稍微有點不同了,需要實現少量的代碼,下面是一個代碼模版:
public void Export(string FileName, string Ext)
{
ReportDocument reportDocument = GetReportDocument();
ExportOptions exportOptions = new ExportOptions();
DiskFileDestinationOptions diskOptions = ExportOptions.CreateDiskFileDestinationOptions();
exportOptions.ExportFormatType = GetExportFormatType(Ext);
exportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
diskOptions.DiskFileName = FileName+"."+Ext;
exportOptions.ExportDestinationOptions = diskOptions;
reportDocument.Export(exportOptions);
}
其中GetExportFormatType()的實現如下:
private ExportFormatType GetExportFormatType(string ext)
{
switch (ext)
{
case "pdf":
return ExportFormatType.PortableDocFormat;
case "rtf":
return ExportFormatType.RichText;
case "doc":
return ExportFormatType.WordForWindows;
case "xls":
return ExportFormatType.Excel;
case "html":
return ExportFormatType.HTML32;
default:
return ExportFormatType.NoFormat;
}
}
而GetReportDocument()則是一個返回使用者要匯出的報表的ReportDocument 對象的函數,使用者自己隨意去實現。
另外還要注意,FileName的格式必須是:"c:\\crystalreport" 這樣的形式。
套用這個代碼模版,就可以實現5種格式的報表匯出功能;