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

问题描述 投票:6回答:9

目前我们正在使用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. 必须能够从用户提供的.dot,.xlt和.pot模板创建Word,Excel和Powerpoint文档
  4. 必须能够通过在某些点替换某些文本来进一步自定义文档,例如姓名,地址等
  5. 免费或非常低的费用。我不能提出购买订单以取代工作系统,理由是一些网站上的四个人认为这是一个肮脏的黑客;)

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

asp.net ms-office office-interop
9个回答
4
投票

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

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

我知道有tools不使用Office,但它们非常昂贵。我的解决方案是切换到自动化OpenOffice。 OpenOffice似乎更稳定,我已经抛弃了悬挂流程等。

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


1
投票

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


1
投票

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

File Format Components (Aspose)

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

Software Artisans OfficeWriter


1
投票

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


1
投票

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


0
投票

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


0
投票

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

你可以看到ASP.NET样本here并下载免费试用版here

免责声明:我拥有SpreadsheetGear LLC


0
投票

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

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

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


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.