今天在導出Excel2007時報了個錯,問是否修復,點yes就提示修復正常了,但具體什么原因沒說,如圖
之前簡單的導出代碼是這樣寫的
public static void ExportToWeb(string strFileName,IWorkbook Workbook )
{
HttpContext curContext = HttpContext.Current; // 設置編碼和附件格式 curContext.Response.ContentType = "application/vnd.ms-excel"; curContext.Response.ContentEncoding = Encoding.UTF8; curContext.Response.Charset = ""; curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(strFileName, Encoding.UTF8)); var stream = WriteToStream(Workbook); curContext.Response.AddHeader("Content-Length", stream.ToArray().Length.ToString()); curContext.Response.BinaryWrite(stream.GetBuffer()); curContext.Response.End();
}
在2003上完全行的通,網上很多小伙伴07也是這樣寫的,但我打開時報錯。
后面這樣改就可以了
//導出流 public static void ExportToWeb(string strFileName,IWorkbook Workbook ) { HttpContext curContext = HttpContext.Current; curContext.Response.Charset = "UTF8"; curContext.Response.ContentEncoding = System.Text.Encoding.UTF8; strFileName = System.Web.HttpUtility.UrlEncode(strFileName, System.Text.Encoding.UTF8); // 添加頭信息,為"文件下載/另存為"對話框指定默認文件名 curContext.Response.AddHeader("Content-Disposition", "attachment; filename=" + strFileName); // 指定返回的是一個不能被客戶端讀取的流,必須被下載 curContext.Response.ContentType = "application/ms-Excel"; // 把文件流發送到客戶端 Workbook.Write(curContext.Response.OutputStream); // 停止頁面的執行 curContext.Response.End(); }
做個記錄,也希望幫到遇到同樣問題的伙伴。