c# - 如何动态创建excel并在c#中下载?

标签 c# asp.net excel

我有下面的示例代码,它将创建一个 excel 文件。 我不想将其保存在服务器中。

  if (app == null)
                    return;
                app.Visible = true;
                object loc;

                workbook = app.Workbooks.Add(1);
                workbook.SaveAs("D:\\Sample.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing,Type.Missing);

不保存如何即时下载?

最佳答案

您违反了服务器上 Office 自动化的最基本规则 - 不要这样做! Microsoft Office 不适用于非交互式登录 session ,例如 Web 服务器使用的 session 。你可能会发现,鉴于你上面的代码并没有做太多事情,这现在可以工作了,但微软几乎可以保证随着你的代码更改、你的服务器配置和 Office 产品更新,你会随着时间的推移遇到各种问题。

相反,Office 文档应该由许多不直接绑定(bind)到 Office 套件本身的工具之一生成(Office 文档自 Office 2007 以来一直使用称为 OpenXML 的开放格式)。这些工具直接生成最终存储在 xslx 文件中的 XML 文件和打包元数据。

我通常喜欢使用 Microsoft OpenXML SDK,它是处理这些事情的一把瑞士军刀。它很容易使用不当,但您可以使用它创建几乎任何 Office 文档。 http://msdn.microsoft.com/en-us/library/office/bb448854.aspx

如果您要使用 OpenXML SDK,Open XML SDK 生产力工具是必备工具。 SDK 和快捷 session 工具均可下载: http://www.microsoft.com/en-us/download/details.aspx?id=30425 .

关于c# - 如何动态创建excel并在c#中下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27001105/

相关文章:

C# - 计算多个文件的总统计数据

excel - 在 2 列前任-后继列表中查找最新项目

excel - 设置 jasper 报告列的格式

c# - 带空格的阿拉伯语正则表达式

C# 客户端应用程序不接收来自 Linux tcp 服务器的消息

asp.net - 如何制作IRouteConstraint过滤路由

c# - 尝试路由到特定 URL 时找不到目录错误

c# - 具有 CMS 功能的 ASP.NET MVC3 应用程序

excel - OfficeWriter Excel 报告 - bc30277 类型字符 '!' 不匹配

c# - ASP.NET 中的 Crystal Report 问题 - ExportToHttpResponse