在Web應用程式中,我們無法像在Windows應用程式那樣匯出報表,因為程式是在伺服器端執行的,執行匯出時,其結果也是在伺服器端,那應該如何實現完整的客戶端匯出呢?其實這個也不難,方法是:把報表指定匯出到某個網站上事先建立好的報表暫存文件,然後利用response.redirect()指令,將瀏覽器網址指向該報表位置,這樣用戶的瀏覽器就會嘗試下載剛匯出的文件,文件就會被下載到客戶端,從而達到我們需要的效果。 部分程式碼如下:
public string ExportReport()
{
ExportOptions creo = new ExportOptions();
DiskFileDestinationOptions crdo = new DiskFileDestinationOptions();
string FileName = Request.PhysicalApplicationPath + "ExportFileExap.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時自動產生的系統使用者)在匯出目錄文有「寫入」權限即可。