使用EPPlus将DataTable导出到Excel

11 浏览
0 Comments

使用EPPlus将DataTable导出到Excel

我想用EPPlus将一个数据表导出到Excel文件中。这个数据表有一个int类型的属性,所以我希望在Excel文件中保持相同的格式。有人知道怎样将这样的DataTable导出到Excel吗?

0
0 Comments

问题的原因是在导出 DataTable 到 Excel 时使用了错误的 HttpContext 对象。解决方法是替换 HttpContext.Current.Response 为 HttpContext.Current,并确保引用了正确的命名空间。以下是修改后的代码:

public void ExporttoExcel(DataTable table, string filename)
{
    System.Web.HttpContext.Current.Response.Clear();
    System.Web.HttpContext.Current.Response.ClearContent();
    System.Web.HttpContext.Current.Response.ClearHeaders();
    System.Web.HttpContext.Current.Response.Buffer = true;
    System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
    System.Web.HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
    System.Web.HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=GridData.xlsx");
    using (ExcelPackage pack = new ExcelPackage())
    {
        ExcelWorksheet ws = pack.Workbook.Worksheets.Add(filename);
        ws.Cells["A1"].LoadFromDataTable(table, true);
        var ms = new System.IO.MemoryStream();
        pack.SaveAs(ms);
        ms.WriteTo(System.Web.HttpContext.Current.Response.OutputStream); 
    }
    System.Web.HttpContext.Current.Response.Flush();
    System.Web.HttpContext.Current.Response.End();
}

对于遇到 'System.Web.HttpContextBase' does not contain a definition for 'Current' 错误的人,解决方法是将 HttpContext.Current 替换为 System.Web.HttpContext.Current。详细解决方法可以参考这个链接:http://stackoverflow.com/questions/19431820

0
0 Comments

问题原因:需要将DataTable导出到Excel文件,并在浏览器的响应中进行下载。

解决方法:使用EPPlus库实现将DataTable导出为Excel文件,并通过浏览器进行下载。

具体代码如下:

Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode("Logs.xlsx", System.Text.Encoding.UTF8));
using (ExcelPackage pck = new ExcelPackage())
{
    ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Logs");
    ws.Cells["A1"].LoadFromDataTable(dt, true);
    var ms = new System.IO.MemoryStream();
    pck.SaveAs(ms);
    ms.WriteTo(Response.OutputStream);
}

感谢提供这段代码片段!不需要对"Logs.xlsx"进行URL编码。

0
0 Comments

问题的出现原因是在使用EPPlus库将DataTable导出到Excel时,当DataTable包含大量行时,导出操作会失败。

解决方法是打开一个新的问题来讨论这种特定情况,可能需要对代码进行进一步优化以处理大量数据的导出。

以下是一个使用EPPlus库将DataTable导出到Excel的示例代码:

using (ExcelPackage pck = new ExcelPackage(newFile))
{
  ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Accounts");
  ws.Cells["A1"].LoadFromDataTable(dataTable, true);
  pck.Save();
}

这段代码使用ExcelPackage和ExcelWorksheet类来创建一个新的Excel文件,并在其中添加一个名为"Accounts"的工作表。然后,使用LoadFromDataTable方法将DataTable的数据加载到工作表的单元格中,并使用true参数来指定是否包含表头。最后,使用Save方法将Excel文件保存到磁盘上。

这种方法在处理小规模数据时效果很好,但当DataTable包含大量行时,导出操作可能会失败。如果遇到这种情况,可以尝试优化代码或分批导出数据以减少内存消耗。

希望这个解决方案能帮助到你!

0