很多人在开发环境下使用Microsoft.Office.Interop.Word或Microsoft.Office.Interop.Excel进行编程,并成功运行,部署到IIS或网站服务器上通常会收到这个错误:
"检索 COM 类工厂中CLSID为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 8000401a"
或“检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。”
此时,只能在服务器上安装Office,并配置DCOM权限,步骤见:http://www.cnblogs.com/downmoon/archive/2009/01/16/1376702.html
相当麻烦,而且服务器上安装Office本身就显得很另类,如果是托管或租用的服务器,更雪上加霜。
其实,我以前也犯过类似的错误,后来,发现很多人还在跟我一样走老路,于是写下此文,以避免其他初学者走弯路。
合理的解决方案是采用第三方的独立组件,这样做的好处是与服务器的配置无关。
Word相关:
1、Aspose.Word,这是一个组件集合中的一个,是商业软件,支持.Net(C#/VB.net)和Java
官方站点:http://www.aspose.com/categories/product-family-packs/aspose.total-product-family/default.aspx
2、OfficeWriter,这也是一个商业软件。
官方站点:http://www.officewriter.com/
谁发现有免费的开源组件,请通知我一声,感谢!当然,这个主要是针对Office 2003以下版本,Offcie 2007开始已采用Xml格式取代二进制格式存储数据。
Excel相关:
1、NPOI,开源、免费的强大Excel组件。
官方网站:http://npoi.codeplex.com/
http://www.cnblogs.com/tonyqus/archive/2009/03/16/1409966.html
应用示例:http://www.cnblogs.com/downmoon/archive/2011/04/16/2017603.html
2、MyXls,开源、免费的强大Excel组件。
官方网站:http://sourceforge.net/projects/myxls/files/MyXls/
应用示例:http://www.cnblogs.com/downmoon/archive/2011/05/30/2063258.html