WCF中的Excel自动化

3
我们已经开发了两个项目:WCF和ASP.net网站。其中,WCF服务包含一些代码,用于生成Excel文件。它有类似这样的内容:

Excel.Application xlapp=new Excel.Application();
xlapp.visible=true;
//get data from dataset and process it and then write it to excel

这个WCF服务托管在我的ASP.net网站上,可以在网页上点击按钮运行

然而,在IIS 7上运行此服务和asp.net时,会产生很多错误

其中一些错误如下:

检索CLSID {00024500-0000-0000-C000-000000000046}组件的COM类工厂失败,原因是以下错误:80070005。

然后给予权限:

应用程序 Microsoft Office Excel 无法打开或保存更多文档,因为可用内存或磁盘空间不足。• 要提供更多内存,请关闭不再需要的工作簿或程序。• 要释放磁盘空间,请从要保存到的磁盘中删除不再需要的文件。

由于所有这些错误,我无法在IIS 7上运行excel

我已经尝试了从权限到身份验证的所有方法,但仍然会生成错误。我在本地机器上运行XP,在IIS机器上运行Win 7(这是WIN 7的问题吗?)

还有链接称根本不支持服务器端Office自动化

难道没有简单的方法来启动IIS 7中的excel吗?或者我应该在ASP.net网站中调用excel而不是WCF服务...

感谢大家

3个回答

3
自动化 Excel 应该尽可能使用 OpenXML 库,因为它不需要 Excel 实例正在运行,这对于服务器端处理来说是最好的选择。

1

Bas Brekelmans是正确的。你应该选择OpenXML。我花了大约2-3天的时间寻找解决方案。有许多变通方法。在System32/SysWOW64中创建一个新路径。

http://social.msdn.microsoft.com/Forums/en-US/b81a3c4e-62db-488b-af06-44421818ef91/excel-2007-automation-on-top-of-a-windows-server-2008-x64

另一个解决方案是通过 dcomcnfg.exe -> 组件服务->计算机->我的电脑->DCOM 配置->Microsoft Word->右键单击->属性->安全性&身份验证。你会发现很多关于它的问题,但可能只有 1-2 条回复是有效的。我有一个服务器可以正常使用 Office 自动化,而另一个服务器则无法使用,原因不明。我已经为此疑难杂症进行了数周的故障排除。此外,服务器端自动化是 Microsoft 服务器不支持的功能(不应该支持)。另外,请查看您编译项目的版本,是否为 x64 或 x86。

0

Bas Brekelmansmike27015是正确的。

在ASP.NET项目中,您永远不应该使用COM组件。 最好使用OpenXml库或一些第三方库,比如NPOI NPOI是免费的,并支持xls和xlsx(open xml)类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接