【问题标题】:Strategy in exporting to Excel with formatting from ASP.NET?使用 ASP.NET 格式化导出到 Excel 的策略?
【发布时间】:2010-04-07 19:59:25
【问题描述】:

所以这是另一个导出到 Excel 的问题。

我有一个页面,其中有一个按样式表进行格式化的表格。 当我通过将 ContentType 设置为 application/excel 并将 Content-Disposition 设置为附件来导出页面时,我可以将表格导出到 Excel(而不是 CSV)。但是,它会丢失所有格式。我认为这是因为 Excel 不加载 CSS,我想这是合理的。

因此,在我必须在网络上显示表格并导出到 Excel 的情况下,两者都具有相似(即使不精确)格式,不使用 NPOI 之类的最佳方法是什么?

如果可能,我会尽量减少工作并保留单个模板。我是否需要创建两个单独的模板:一个带有样式表,另一个带有 Excel 表格本身的嵌入样式?

只有一个带有条件格式的模板会非常混乱。

有什么想法吗?

【问题讨论】:

    标签: asp.net-mvc excel export


    【解决方案1】:

    如果您还没有解决问题,我建议您使用 Open XML SDK 2.0 for Microsoft Office(请参阅http://www.microsoft.com/downloads/details.aspx?FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0&displaylang=en)。通过这种方式,您无需在服务器上安装 Excel 就可以创建 XLSX 文件。 XLSX 文件是 xml 文件的压缩(如 ZIP 文件)集合。 Open XML SDK 2.0 帮助您将 XLSX 文件创建和更改为纯 xml 文件。如果您第一次看 Open XML SDK,很多事情看起来很奇怪,但这只是开始。有一些名为“Open XML SDK 2.0 Productivity Tool”(Open XML SDK 2.0 的一部分)可以为您生成很多有用的代码。此外,您可以创建一个漂亮的 Excel 文档,您可以将其用作您将创建的文档的原型(模板)。所以不用写很多代码就可以解决复杂的格式化问题。

    查看http://msdn.microsoft.com/en-us/library/cc850837(v=office.14).aspx 的一些示例和http://openxmldeveloper.org/default.aspx。另请参阅 Creating Excel document with OpenXml sdk 2.0 作为开始示例。您还可以在http://www.codeplex.com 上找到很多关于 Open XML SDK 的好东西

    【讨论】:

    • 感谢您的建议。我一定会看看这个。我担心这对于使用比 2007 年更旧的 excel 版本的用户是否透明,但我认为使用兼容包应该没问题。另一件事是我已经可以使用 NPOI 做到这一点。但我会评估两者,看看哪个更适合我。
    • 顺便说一句,最初的问题不是如何通过 Web 提供 Excel,而是如何最大限度地减少维护 Web 和 Excel 版本的“报告”所需的工作。我需要同时支持两者,并且两者的格式应该足够相似。不确定这是否可行。
    • 我理解你是正确的。我还在我的项目中使用网络报告和在 Excel 中导出此报告。您写道,导出数据的格式是为您导入的。我也有同样的问题,所以我决定不使用 CSV 或 HTML,因为在 Excel 中导入期间数据转换错误。兼容包适用于所有使用 Office 97 的旧版 Office。在将使用导出数据的所有计算机上,都已安装兼容包。所以这对我来说是最好的方式。只有第一步不是很容易,但现在一切都很完美。最好的问候。
    【解决方案2】:

    有几种方法 您可以使用 VSTO 在您的服务器上实例化一个 excel 对象,然后将文档写入内存并写入以响应本机文件,但是如果您为每个请求创建一个 excel 对象,这种方法可能会有点贵,所以您可以尝试做一个封装了 excel 对象实例的单例对象

    【讨论】:

    【解决方案3】:

    您可以创建与网格外观相似的报告(rdlc 文件)。然后,您可以执行一个操作,在其中实例化 LocalReport,将您想要的数据传递给它并调用它的 Render 方法。然后返回 Render 方法返回的字节数组。

    【讨论】:

    • 我不太明白 - 你的建议似乎是关于一些报告框架的。这与我必须导出到 Excel 的要求有何关系?
    • 确切地说,您可以创建 Reporting Services 报表(无需连接到报表服务器)。您在报告和数据绑定中定义布局,Visual Studio 有一个可视化编辑器。在导出您正在谈论的表格时,您可以改为将报表与用于生成表格的相同数据绑定,并且您可以生成用于导出的 excel 文件或 pdf 文件。您必须对报告服务有点熟悉,但这并不难。您是否按照我添加的链接进行操作?你有一个小例子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多