[英]Error while generating excel from datatable in C#
使用EPPlus庫從數據表生成Excel時出現錯誤
System.ObjectDisposedException:包對象已關閉並釋放,因此無法對此對象或在該包的一部分上打開的任何流執行操作。
我在這里搜索並發現GetAsByteArray()
函數處理了程序包對象。 請幫助克服這個問題。
private void DumpExcel(DataTable tbl)
{
using (ExcelPackage pck = new ExcelPackage())
{
//Create the worksheet
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Demo");
//Load the datatable into the sheet, starting from cell A1.
//Print the column names on row
ws.Cells["A1"].LoadFromDataTable(tbl, true);
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("content-disposition", "attachment; filename=ExcelDemo.xlsx");
Response.AddHeader("content-type", "application/Excel");
Response.ContentType = "application/vnd.xls";
Response.AddHeader("content-length", pck.GetAsByteArray().Length.ToString());
Response.BinaryWrite(pck.GetAsByteArray());
}
}
請注意:我想生成excel,並將其留給用戶以將excel報告保存在本地計算機上的任何位置,而不是在保存excel的服務器上指定路徑。
請嘗試這種解決方法,(避免第二次調用GetAsByteArray(),因為您注意到它會處理該對象)
byte[] rawData = pck.GetAsByteArray();
Response.AddHeader("content-length", rawData.Length.ToString());
Response.BinaryWrite(rawData);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.