7

目前,我们正在使用 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. 免费或非常低的费用。我将无法提出采购订单来更换工作系统,因为某些网站上的四个人认为这是一个肮脏的黑客;)

我不确定有没有更好的方法。在那儿?

4

8 回答 8

5

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

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

我知道有些工具不使用 Office,但它们非常昂贵。我的解决方案是切换到自动化 OpenOffice。OpenOffice 似乎要稳定得多,而且我已经留下了挂起的进程等。

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

于 2009-09-08T13:44:05.693 回答
1

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

于 2009-06-24T16:38:30.257 回答
1

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

文件格式组件 (Aspose)

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

软件工匠 OfficeWriter

于 2009-06-24T16:40:56.670 回答
1

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

于 2009-09-16T06:01:16.203 回答
0

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

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

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

于 2009-06-25T12:13:34.323 回答
0

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

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

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

于 2009-06-25T12:01:04.037 回答
0

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

于 2009-06-24T16:34:06.403 回答
0

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

您可以在此处查看 ASP.NET 示例并此处下载免费试用版。

免责声明:我拥有 SpreadsheetGear LLC

于 2009-06-24T16:42:19.320 回答