前篇文章Excel轉ODS檔案中提到,使用Interop來操作Excel幫我們轉檔這個做法。
沒想到在實作的上居然遇到這麼多問題……
以下操作目前都是在本機執行階段碰到的,還沒佈上 Server 測試過
首先,在開啟 Excel 檔案的時候,出現找不到檔案的錯誤。
這個是 Excel 程式沒有權限的問題,所以要先去設定。
別像我一樣跑去 Program Files 找半天,這要去元件管理才能設定。元件服務 > 電腦 > 我的電腦 > DCOM 設定 > Microsoft Excel 應用程式
,右鍵內容 > 安全設定
把啟動和啟用權限、存取權限都加上 ASP.NET 的帳戶即可
有些文章有提到,要把識別身分從執行啟動的使用者→互動式使用者。
但是我設定了之後出現了其他.COM 的錯誤,看其他文章有人有提到要設定登入者的帳密,想說是不是網域的問題。
結果設定後又遇到無法使用物件連結與內嵌(Cannot use object linking and embedding)的錯誤!
最後改回原來的從執行啟動的使用者執行成功…… 氣死我了……
另外要注意的是參考的 COM 元件要對應到伺服器安裝的 Office 版本。
一開始我直接從 nuget 上安裝,結果後來發現版本不對才改成手動加入參考。
最後紀錄一下黑暗執行緒的這篇文章(透過 .NET 程式操作 Excel 的注意事項)
在撞壁的時候有發現,工作管理員裡面多了一堆 Excel.exe 的垃圾必須清掉。
每執行一次失敗就會多一筆,非常煩人。
文章中有實作如何釋放這些元件,避免資源被占用。
參考文章:
https://dotblogs.com.tw/shadow/archive/2011/05/02/24043.aspx?fid=32263
https://www.cnblogs.com/coy/archive/2008/06/26/1230350.html