我用C#寫了一個執行檔,功能是建立一個EXCEL檔案並儲存在Server 2019的某個目錄中,我是用Microsoft.Office.Interop.Excel這個物件的Workbook.SaveAs這個方法來儲存,奇怪的是直接手動啟動執行檔(*.exe),檔案可順利儲存,但放在工作排程中,設定[不論使用者登入與否均執行]及[以最高權限執行],但都會發生以下錯誤:
System.Runtime.InteropServices.COMException (0x800A03EC): 發生例外狀況於 HRESULT: 0x800A03EC
於 Microsoft.Office.Interop.Excel._Workbook.SaveAs(Object Filename, Object FileFormat, Object Password, Object WriteResPassword, Object ReadOnlyRecommended, Object CreateBackup, XlSaveAsAccessMode AccessMode, Object ConflictResolution, Object AddToMru, Object TextCodepage, Object TextVisualLayout, Object Local)
如果設定為[只有使用者登入時才執行]且不要登出,就不會發生錯誤,檔案可順利儲存,如果把相同的程式放在Server 2008 R2也不會有問題,在網上爬了好久都找不到答案,請各位前輩高手幫幫忙,解答一下我遇到的這個棘手的問題,小弟先多謝了~
當執行工作時,請使用下列使用者帳戶,你是用哪個?
另外你有使用過EPPlus這個套件過嗎,之前自動化我都是用這個做的,測試無登入是正常的
另外可以參考一下其他人說法
https://stackoverflow.com/questions/28323272/excel-interop-not-working-on-user-logout
(我記得沒錯的話,office內建套件無法尚未初始化(未登入帳戶)的情況下執行,如果你可以的話將執行者改成Administator看看)
首先感謝大大的回答,祝好人一生平安,其實不管是儲存檔案的資料夾,工作排程的執行者及DCOM的執行者,都是設定Administator,都不行,奇怪的是我的C#程式存取檔案都沒問題,就是呼叫Excel.Workbook.SaveAs去存檔時有問題,現在只能讓Server2019一直登入不要登出,才能順利把EXCEL檔案存下來。另外,我沒有使用過EPPlus,感謝大大的推薦,如果我的問題無法解決,只好來試試EPPlus了。
感謝大大推薦使用EPPlus,困擾我好久的問題終於解決了,我發現EPPlus更簡單好用,還不用裝OFFICE,挺不錯的套件,讚!
不客氣,多學習是好事