【问题标题】:Cannot export excel file from dataTable by using epplus in C#无法在 C# 中使用 epplus 从 dataTable 导出 excel 文件
【发布时间】:2016-08-08 04:29:22
【问题描述】:

我找到了很多关于如何使用 epplus 将DataTable 导出为 Excel 的示例和教程,但我找不到直接的方法。因此我尝试了以下代码..

我的数据表:

===============================
d1    | d2    |  d3
===============================
aa1   | bb1   | cc1
aa2   | bb2   | cc2
aa3   | bb3   | cc3
aa4   | bb4   | cc4

脚本:

using OfficeOpenXml;
using OfficeOpenXml.Drawing;

//........
    protected viod exportToExcel (dataTable dt)
    {
        try
        {

            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);                          
            }

        }
        catch (Exception ex)
        {
            Debug("error: " + ex.Message);//catch nothing
        }

    }

它返回一个服务器错误并且没有捕获任何异常,所以我不知道发生了什么错误..

但是,当我删除

using (ExcelPackage pck = new ExcelPackage())

上面代码中的部分。

有什么想法吗?

【问题讨论】:

  • 只是快速浏览 cmets... 我假设您的返回类型不应该是 void 而不是 viod 尽管您必须在代码中拥有该权限才能编译。另外我不确定这是否是您的问题的原因,但您在 LoadFromDataTable 中的第一个参数需要是变量 dt 而不是类型 dataTable。似乎也不会编译。 C# 不区分大小写,因此需要dataTable 有一个大写 D?
  • @MarkBalhoff 我不知道返回类型的含义是什么(我对 C# 很陌生)。我只想提供一个功能,当用户单击下载按钮时,数据表将以 excel 格式下载到他们的计算机。另外,我编辑了我的代码

标签: c# excel


【解决方案1】:

从服务器导出到excel的最佳方式,将数据表转换为HtmlTextWriter。 在里面 Response.AddHeader("content-disposition","attachment;filename=file.xls");

Response.ContentType="application/vnd.ms-excel"; 最后是

Response.Output.Write(htmltexwriter)

【讨论】:

  • 我想给excel文件设置样式,所以epplus应该是更好的选择。
猜你喜欢
  • 2012-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-01
  • 2011-12-12
  • 2019-10-28
  • 1970-01-01
相关资源
最近更新 更多