iT邦幫忙

0

C#使用Excel.Workbook.SaveAs在Server2019發生的奇怪問題

  • 分享至 

  • xImage

我用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也不會有問題,在網上爬了好久都找不到答案,請各位前輩高手幫幫忙,解答一下我遇到的這個棘手的問題,小弟先多謝了~

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
mobone
iT邦新手 5 級 ‧ 2024-04-22 20:51:13
最佳解答

當執行工作時,請使用下列使用者帳戶,你是用哪個?
另外你有使用過EPPlus這個套件過嗎,之前自動化我都是用這個做的,測試無登入是正常的
另外可以參考一下其他人說法
https://stackoverflow.com/questions/28323272/excel-interop-not-working-on-user-logout
(我記得沒錯的話,office內建套件無法尚未初始化(未登入帳戶)的情況下執行,如果你可以的話將執行者改成Administator看看)

傑客 iT邦新手 5 級 ‧ 2024-04-24 09:05:48 檢舉

首先感謝大大的回答,祝好人一生平安,其實不管是儲存檔案的資料夾,工作排程的執行者及DCOM的執行者,都是設定Administator,都不行,奇怪的是我的C#程式存取檔案都沒問題,就是呼叫Excel.Workbook.SaveAs去存檔時有問題,現在只能讓Server2019一直登入不要登出,才能順利把EXCEL檔案存下來。另外,我沒有使用過EPPlus,感謝大大的推薦,如果我的問題無法解決,只好來試試EPPlus了。

傑客 iT邦新手 5 級 ‧ 2024-04-24 10:08:33 檢舉

感謝大大推薦使用EPPlus,困擾我好久的問題終於解決了,我發現EPPlus更簡單好用,還不用裝OFFICE,挺不錯的套件,讚!

mobone iT邦新手 5 級 ‧ 2024-04-24 11:23:37 檢舉

不客氣,多學習是好事/images/emoticon/emoticon12.gif

我要發表回答

立即登入回答