【发布时间】: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 格式下载到他们的计算机。另外,我编辑了我的代码