【问题标题】:ASP.Net creating multiple sheets in excel with Response.WriteASP.Net 使用 Response.Write 在 excel 中创建多个工作表
【发布时间】:2012-04-20 10:22:44
【问题描述】:

我通常使用 Response.Write 将我的报告导出到 Excel 文件。

例如

Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=MyFile.xls");
Response.ContentType = "application/vnd.ms-excel";
Response.Write("<meta http-equiv=Content-Type content=text/html;charset=UTF-8>");
Response.Write("<table>");
Response.Write("<tr>");
Response.Write("<td>");
Response.Write("Hello");
Response.Write("</td>");
Response.Write("</tr>");
Response.Write("</table>");
Response.End();

现在我想导出一个包含多张工作表的 excel 文件。 我怎样才能做到这一点?

【问题讨论】:

  • 该代码与创建 Excel 文件有何关系?
  • 我的网页上有一个包含用户列表的表格。每个用户都有他/她自己的个人资料(姓名、姓氏、年龄等)。所以我想为我的表格中显示的用户导出配置文件。所以这意味着如果我有用户(A,B,C),那么在我导出的 Excel 文件中,我将有工作表(A,B,C),每个工作表都包含特定用户的配置文件。
  • 您应该写出有问题的代码,您的代码不会导出到 excel,它会写入 HTML 表格并在请求中发送错误的内容类型。
  • 好的。您在此处看到的这段代码是由我的 asp.net 按钮(服务器侧按钮)执行的。因此,如果我单击此按钮,则会看到一个弹出对话框,要求我选择要保存文件的位置。
  • 是的,我知道,有一个 ASP.NET 标签。不会有任何对话框或类似的东西,我将通过使用 EPPlus 在 excel 中导出 DataTable 的示例来更新我的答案

标签: asp.net


【解决方案1】:

从技术上讲,这不是导出到 excel,而是您发送带有错误标题的 html 以欺骗浏览器以使用 excel 打开此内容。

最好使用 NPOI (xls) 或 / 和 EPPlus (xlsx) 并完全控制您的 Excel 导出,然后您可以创建新工作表等等。

更新:在这个 SO 答案中,您可以看到 ashx 处理程序的示例,该处理程序返回从 DataTable 创建的 excel 文件:

C# create/modify/read .xlsx files

【讨论】:

  • 好的,谢谢。我只是希望这个库不会减慢我的网络服务器,因为我已经尝试过微软的 API 库(Microsoft.Office.Interop.Excel),我听到很多人批评它,说它减慢了网络服务器.
  • 他们是对的,MS 甚至不支持服务器上的 Interop to excel,这些是纯 c# 库,速度非常快。
  • 好的。我喜欢你的第一个解释(“欺骗浏览器”)非常清楚。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-19
  • 2015-04-27
  • 1970-01-01
  • 2016-08-13
  • 2021-06-10
  • 1970-01-01
相关资源
最近更新 更多