在Web應用程序中,我們無法像在Windows應用程序那樣導出報表,因為程序是在服務器端執行的,執行導出時,其結果也是在服務器端,那應該如何才能實現完整的客戶端導出呢?其實這個也不難,方法是:把報表指定導出到某個網站上事先建立好的報表暫存文件,然後利用response.redirect()指令,將浏覽器網址指向該報表位置,這樣用戶的浏覽器就會嘗試下載剛導出的文件,文件就會被下載到客戶端,從而實現我們需要的效果。 部分代碼如下:
public string ExportReport()
{
ExportOptions creo = new ExportOptions();
DiskFileDestinationOptions crdo = new DiskFileDestinationOptions();
string FileName = Request.PhysicalApplicationPath + "ExportFile\Exap.xls";
//設置導出選項
creo = Myrpt.ExportOptions;
creo.ExportFormatType = ExportFormatType.Excel;
creo.ExportDestinationType = ExportDestinationType.DiskFile;
//設置磁盤文件選項
crdo.DiskFileName = FileName;
creo.DestinationOptions = crdo;
//導出報表
MyRpt.Export();
return FileName;
}
private void buttonExport_Click(object sender, System.EventArgs e)
{
string FileName = ExportReport();
Response.Redirect(Replace(FileName,Request.PhysicalApplicationPath + "ExportFile\",""));
}
要注意的是:當在web中進行導出時,需要對導出目錄具有建立文件的權限,如果權限不足,將會出現“拒絕訪問報表文件……”的錯誤。 讓ASPNET用戶(安裝.Net Framework時自動生成的系統用戶)在導出目錄文具有“寫入”權限即可。