.net直接调用office com组件操作word与pdf
文章目錄
- 使用場景
- 一、使用步驟
- 1.引入庫
- 2.調用
- 二、我使用時出現的bug
- 錯誤信息一
- 原因及解決方案
- 錯誤信息二
- 原因及解決方案
- 錯誤信息三
- 原因及解決方案
- 三、總結
使用場景
多個word進行合并;word轉pdf;
1,此方法只支持.net framework框架;
2,但恰恰我的項目是netcore的,所以需要在項目中添加引入一個net framework的項目,在源項目中引用framework項目,最終在framework項目中進行對com組件進行調用處理;
一、使用步驟
1.引入庫
第一步:創建netFramework項目
在項目中 右鍵----添加----新建項目----創建一個netFramework的web項目
(也可以下載我寫的,直接添加現有項目即可,資源下載地址)
第二步:添加引用
右鍵引用----添加引用----點擊COM----找到 Microsoft Word 14.0 Object Library選中確認添加即可(找不到的話,從nuget上面下載安裝也可,已實測)
第三步:創建類文件(此處我只用到了合并word以及word轉pdf,其他代碼不放了,網上可以搜到)
代碼如下(示例):
第四步:添加項目引用(net framework框架可忽略此步)
在實際用的地方,將新建的項目引用進去;
到這里就準備就緒了,進入調用環節;
2.調用
代碼如下(示例):
public void netFrameWorkDemo(){//指定目錄string path = @"E:\codeSource\WEBCORE\wwwroot\UploadFile\1\2021-03-01\";//輸出文檔時會自動創建string outDoc = path+"all.docx";//模版word只需要指定一個空word即可,必須要用,不然后面open方法會報錯,可根據需要自動生成string tempDoc = path+"tempDoc.docx";string ttt = path + "問題匯總.docx";string ttt2 = path + "問題匯總2.docx";//合并wordList<string> arrCopies = new List<string>();arrCopies.Add(ttt);arrCopies.Add(ttt2);WordClass wc = new WordClass();wc.InsertMerge(tempDoc, arrCopies, outDoc);//word轉成pdfstring tttpdf = path + "ttt.pdf";//指定輸出的文件名string ttt2pdf = path + "ttt2.pdf";//指定輸出的文件名wc.WordToPDF(ttt, tttpdf); wc.WordToPDF(ttt2, ttt2pdf);}二、我使用時出現的bug
錯誤信息一
無法將類型為“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 對象強制轉換為接口類型“Microsoft.Office.Interop.Excel._Application”。此操作失敗的原因是對 IID 為“{000208D5-0000-0000-C000-000000000046}”的接口的 COM 組件調用 QueryInterface 因以下錯誤而失敗: 加載類型庫/DLL 時出錯。 (異常來自 HRESULT:0x80029C4A (TYPE_E_CANTLOADLIBRARY))。
原因及解決方案
網上搜了很多方法,有很多說法,又是注冊表又是重裝office的,每人情況都不一定一樣,我的是因為之前裝了wps又卸載了,重新把wps裝上就好了,網上說必須用wps自帶的卸載才行(沒試過,有試過的可以留言共享下)。
錯誤信息二
Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80070005 拒絕訪問。 (0x80070005 (E_ACCESSDENIED)).
原因及解決方案
第一:這個主要是64位系統的問題,word是32位的組件,所以在正常的系統組件服務里是看不到的(找不到CLSID為000209FF-0000-0000-C000-000000000046),可以通過在運行里面輸入 comexp.msc -32 來打開32位的組件服務,在里就能看到excel組件了
第二:只要修改IIS的應用程序池,選擇你的項目,點擊高級設置,標識改為:LocalSystem 或NetworkServer;
錯誤信息三
word轉pdf時報錯 Object reference not set to an instance of an object( 對象引用未設置為對象的實例 )
原因及解決方案
原因是文件夾沒有IIS_USERS的權限。給項目文件夾附上權限即可。
三、總結
這種方法是免費的,缺點還是挺明顯的,就是速度很慢,我測試了一個190頁的word轉成pdf大約月要35秒; 收費的可以使用下 Aspose.word與Aspose.pdf;總結
以上是生活随笔為你收集整理的.net直接调用office com组件操作word与pdf的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用 PyTorch 进行音频信号处理的
- 下一篇: python36.dll下载_pytho