使用EPPlus将DataTable导出为ex​​cel

Dav*_*ifi 67 c# datatable excel export epplus

我想用EPPlus将数据表导出到excel文件,数据表具有int类型的属性,所以我想在excel文件中,格式相同.有谁知道用这些方法将DataTable导出到Excel?

bas*_*gge 137

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

这应该为你做的伎俩.如果您的字段定义为int,EPPlus会将列正确地转换为数字或浮点数.

  • 也许你应该针对那个具体案例提出一个问题呢? (3认同)
  • 如何在导出时格式化数据表的标题? (2认同)
  • 这已经9岁了,仍然帮助人们。所以一次又一次让我惊讶。@AshokanSivapragasam 谢谢你提醒我这一点! (2认同)

Tar*_*ran 17

如果你想在浏览器中回复下载

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);                          
}
Run Code Online (Sandbox Code Playgroud)


Kan*_*XXX 5

在浏览器中下载 excelsheet 使用HttpContext.Current.Response而不是Response否则你会得到Response is not available in this context.错误。这是我的代码

public void ExporttoExcel(DataTable table, string filename)
{
    HttpContext.Current.Response.Clear();
    HttpContext.Current.Response.ClearContent();
    HttpContext.Current.Response.ClearHeaders();
    HttpContext.Current.Response.Buffer = true;
    HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
    HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
    HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    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(HttpContext.Current.Response.OutputStream); 
    }

    HttpContext.Current.Response.Flush();
    HttpContext.Current.Response.End();

}
Run Code Online (Sandbox Code Playgroud)