【问题标题】:Alternative to Office Interop for document generation用于文档生成的 Office 互操作的替代方案
【发布时间】:2009-06-24 16:28:23
【问题描述】:

目前,我们正在使用 office interop 从 office 2003 中的模板(word、excel 和 powerpoint)生成文档。这似乎是相当不受欢迎的(见office-interop-with-64bit-windows-in-asp-net),虽然它工作得很好,但我会更高兴有一个支持的解决方案。

有什么非 hacky 方法可以做到这一点?要求是

  1. 仅限 Office 2003。 (不允许使用 office xml/office 2007 兼容包)
  2. 必须从 ASP.NET 运行服务器端
  3. 必须能够从用户提供的 .dot、.xlt 和 .pot 模板创建 Word、Excel 和 Powerpoint 文档
  4. 必须能够通过在某些点替换某些文本来进一步自定义文档,例如姓名、地址等
  5. 免费或非常便宜。我将无法提出采购订单来更换工作系统,因为某些网站上的四个人认为这是一个肮脏的黑客;)

我不确定是否有更好的方法。有吗?

【问题讨论】:

    标签: asp.net ms-office office-interop


    【解决方案1】:

    我刚刚发布了这个作为对另一个关于自动化 Office 的问题的回答,但我认为这也是对这个问题的合适回答(特别是因为您正在寻找免费或低成本的解决方案)。

    我在使用 Microsoft Excel、Word 和 PowerPoint 通过 Web 服务中的互操作将 Office 文档打印为 PDF 格式时遇到了无穷无尽的问题(性能不佳、进程挂起、进程崩溃等)。我也遇到过一些我怀疑是因为对话框不可见的问题(可能是文件已损坏、已设置只读建议、文件受密码保护等等)。

    我知道有不使用 Office 的 tools 可用,但它们非常昂贵。我的解决方案是切换到自动化 OpenOffice。 OpenOffice 似乎要稳定得多,而且我已将挂起的进程等抛在脑后。

    所以,虽然我想我是在说“不要自动化 Microsoft Office”,但我并不是建议您完全放弃自动化;只是我在自动化 OpenOffice 方面比 Microsoft Office 取得了更多的成功。

    【讨论】:

      【解决方案2】:

      Aspose 在 .NET 和 Java 中有许多组件,用于生成 Word、Excel 和 Powerpoint 文档

      【讨论】:

      • 恐怕没有免费的午餐。你必须付出一些代价——实际资金、开发努力、稳定性……你必须选择你的毒药
      • 在当时的情况下,我们似乎正在使用最好的工具来完成这项工作
      • 免费午餐和牛排晚餐之间的差距很大,虾和龙虾塞满了金粉,这就是我对 Aspose 定价的描述。
      【解决方案3】:

      您应该看看Aspose 提供的产品。有许多不同的文件格式组件允许您创建和操作 PDF 和 Microsoft Office 文档,而无需在服务器上安装 Office:

      File Format Components (Aspose)

      Software Artisans有一些类似的组件可以读写Word和Excel文档:

      Software Artisans OfficeWriter

      【讨论】:

      • OfficeWriter 链接不起作用。尽管如此,他们的价格是多少,价格表是空的……像Aspose一样荒谬吗?无论如何,我对GemBox 图书馆很满意,它们更便宜。
      【解决方案4】:

      看看http://npoi.codeplex.com/ 我用它来创建excel文档。也支持ppt和word。

      【讨论】:

        【解决方案5】:

        如果你有 SQL Server,你可以看看SQL Server Reporting Services

        【讨论】:

          【解决方案6】:

          SpreadsheetGear for .NET 可以处理 Excel 文件的生成。我们专注于电子表格,因此我们不会生成 Word 或 PowerPoint。

          您可以查看 ASP.NET 示例here 并下载免费试用版here

          免责声明:我拥有 SpreadsheetGear LLC

          【讨论】:

            【解决方案7】:

            我们这样做的一种方法是创建您的文档模板并将其保存为 word、excel 或 ppt 文档,但不是使用模板文件,而是以文档保留为人类可读文本的格式。所以对于 Word 和 Excel 保存为 mht。

            然后您可以将模板作为字符串读取,并使用良好的老式字符串操作函数(替换占位符文本,添加您需要的行)然后将字符串保存为 .doc、.xls 或.ppt(由哪个程序创建)文件,它应该在该应用程序中作为文档打开,并且所有格式都完好无损。

            一个提示,您必须在将模板保存到 Word 后在文本编辑器中检查它。 Word 将不加选择地添加换行符,因此它可能会换行您的占位符或在其中放置您可能需要清理的其他格式。

            【讨论】:

            • 失败,没有创建真正的办公文件
            • 我用 Office 2003 XML 试过一次,但我发现它经常在多个 XML 标记之间无缘无故地放置句子,这使得模板很痛苦。
            【解决方案8】:

            看看 OWC(办公网络组件),这些是专为您想要做的事情而设计的!

            我不知道它们是否可以使用模板,因为我已经使用了它们,但我们过去常常动态生成电子表格,然后将它们二进制写入响应流以在浏览器中显示它们。

            我不确定它们是否会完全满足您的要求,但至少值得一开始。

            【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-08-23
            • 1970-01-01
            • 2014-02-01
            • 1970-01-01
            相关资源
            最近更新 更多