码迷,mamicode.com
首页 > 其他好文 > 详细

关于调用office com组件导出Excel

时间:2016-08-11 12:38:55      阅读:596      评论:0      收藏:0      [点我收藏+]

标签:

服务器环境:

环境为win2008 r2 系统为64位 ,程序是C#的winform。因为需要处理数据,最后生成Excel,耗时太长,就使用了多线程。winform程序是由计划任务启动,每天晚上去跑。

 

需求:

每日需要生成大量的Excel给用户,大约有1W+的Excel需要生产,原来使用的Aspose.Cells.dll生成的,但是发现总有很多Excel莫名其妙的不生成,也不报错。后来换成了office的Excel,解决了生成Excel的问题。

但是开发环境下是没问题,服务器上不好使。

 

下面是遇到的问题:

1、服务器没有Excel的COM组件

   解决:安装office的Excel即可。

2、找不到Excel的COM组件,Microsoft Excel Application

   解决:32位系统输入dcomcnfg即可找到

      64位系统输入comexp.msc -32即可找到。因为Excel的COM组件是32位的。

3、导出Excel的过程中,报:

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

    2)检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a

    解决1):80070005,经网上查找,发现是没有配置Excel的COM组件的权限问题。需要配置DCOM配置。具体如下:(网上的配置我没配置明白。最后按自己理解配的)

               技术分享

              在开始-运行里,输出上面提到的命令。找到此Excel组件,然后点击右键属性。

         技术分享
           在安全里,所有的选择自定义,然后点击编辑,把设置计划任务的用户名输入进去,开启所有读写权限。(我发现,启动的EXCEL.EXE程序的用户就是计划任务的用户,所以我认为是该用户在访问COM组件)
               然后点击标识,选择下列用户,输入用户名,密码。最后确定。解决了80070005错误,但是当解决了80070005错误后,新的错误8000401a产生了。目前1W+的Excel,导出的时候只有2-4Excel是报错的,其余的均正确。
        2)的8000401a错误尚未解决,网上有说加入everyone用户即可。一会试试。
    

关于调用office com组件导出Excel

标签:

原文地址:http://www.cnblogs.com/cang12138/p/5760317.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!