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用戶即可。測試無效果。
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM