簡體   English   中英

從C#中的數據表生成Excel時出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM