C# 从C中的数据表生成excel时出错#

C# 从C中的数据表生成excel时出错#,c#,epplus,C#,Epplus,使用库从数据表生成excel时出错 System.ObjectDisposedException:包对象已关闭并已释放,因此无法对此对象或在此包的某个部分上打开的任何流执行操作 我搜索并发现GetAsByteArray()函数处理包对象。 请帮助克服这个问题 private void DumpExcel(DataTable tbl) { using (ExcelPackage pck = new ExcelPackage()) { //Create the wo

使用库从数据表生成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(),正如您所注意的那样,它会处理对象)


请尝试此解决方法(避免第二次调用GetAsByteArray(),正如您所注意的那样,它会处理对象)

byte[] rawData = pck.GetAsByteArray();
Response.AddHeader("content-length", rawData.Length.ToString());
Response.BinaryWrite(rawData);