zoukankan      html  css  js  c++  java
  • C# 关于调用office com组件导出Excel

    服务器环境:

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

    需求:

    每日需要生成大量的Excel给用户,大约有1W4+的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产生了。目前1W4+的Excel,导出的时候只有2-4Excel是报错的,其余的均正确。

       解决2):8000401a错误尚未解决,网上有说加入everyone用户即可。测试无效果。
        
  • 相关阅读:
    ASP输出成n列的表格形式显示的方法,多行多列
    1003
    1005
    Linq to sql 迭代器bug?
    通过global.asax向所有文件注册js
    asp.net任务调度之Quartz.net
    SQL Server 批量插入数据的两种方法
    C#通过反射实例化对象
    linq to sql 学习
    C#全角和半角转换
  • 原文地址:https://www.cnblogs.com/cang12138/p/5760317.html
Copyright © 2011-2022 走看看