用于文档生成的Office Interop的替代方案

时间:2009-06-24 16:28:23

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

目前我们正在使用office interop从office 2003(word,excel& powerpoint)中的模板生成文档。这似乎是相当不赞成的(见office-interop-with-64bit-windows-in-asp-net),虽然它工作正常但我会更乐意使用支持的解决方案。

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

  1. 仅限Office 2003。 (不允许办公室xml / office 2007兼容包)
  2. 必须从ASP.NET运行服务器端
  3. 必须能够创建Word,Excel&来自用户提供的.dot,.xlt和.pot模板的Powerpoint文档
  4. 必须能够通过替换特定点的某些文字来进一步自定义文档,例如姓名,地址等
  5. 免费或非常低廉的费用。我不能提出购买订单以取代工作系统,理由是某些网站上有四个人认为这是一个肮脏的黑客;)
  6. 我不确定有更好的方法。有吗?

9 个答案:

答案 0 :(得分:4)

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

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

我知道有tools可用,不使用Office,但它们非常昂贵。我的解决方案是切换到自动化OpenOffice。 OpenOffice看起来要稳定得多,而且我已经抛弃了悬挂流程等等。

所以,虽然我想我说“不要自动化Microsoft Office”,但我并不是说你完全放弃了自动化;只是因为我已经比使用Microsoft Office更加成功地实现了OpenOffice的自动化。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

Windward Reports完全符合您的要求(免责声明,我是Windward的首席技术官)。使用Windward,您可以在Word,Excel或PowerPoint中设计文档,然后我们的引擎将该模板与数据合并以创建最终文档。该引擎在Java和.NET中可用,并且 NOT 在服务器上使用Office,因此它非常快,并且没有使用互操作的问题。

答案 4 :(得分:0)

如果您有SQL Server,可以查看SQL Server Reporting Services

答案 5 :(得分:0)

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

  

File Format Components (Aspose)

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

  

Software Artisans OfficeWriter

答案 6 :(得分:0)

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

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

免责声明:我拥有SpreadsheetGear LLC

答案 7 :(得分:0)

我们完成此操作的一种方法是创建文档模板,并将其另存为word,excel或ppt文档,但文档保留在人类可读文本中。所以对于Word和Excel保存为mht。

然后你可以在模板中读取一个字符串,并使用旧的老式字符串操作函数处理它(替换占位符文本,添加行,无论你需要做什么)然后将字符串保存为.doc,.xls或.ppt(曾经程序创建它)文件,它应该作为该应用程序中的文档正确打开,所有格式都保持不变。

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

答案 8 :(得分:0)

看看OWC(办公室网页组件),这些是为您的目标而设计的!

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

我不确定他们是否会完全符合您的要求,但至少值得考虑一下。