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