服務器環境:
環境為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是報錯的,其余的均正確。
