2016-12-14 86 views
1

我嘗試從與模板的Microsoft.Office.Interop.Word添加文檔,使用:C#字的Interop不能添加文件

Microsoft.Office.Interop.Word.Aplication wordApp = 
      new Microsoft.Office.Interop.Word.Application(); 

wordApp.Documents.Add("somedoc.dotx"); 

但我總是得到一個未處理COMException,告訴我,該文件可能被損壞。我試過doc,docxdotx,我確定該文件存在,因爲我之前檢查過它。當我在Word中打開文件時,它打開正常。

+0

第一個參數是* template *。 「somedoc.docx」聽起來不像一個模板,儘管我們似乎無法依靠SO上的有效代碼片段。哦,快樂。考慮不傳遞任何參數,直到你保存它纔會命名該文件。 –

+0

@HansPassant我也嘗試過實際的模板(正如我的問題所述)。我確實需要使用該文件作爲模板,我稍微澄清了我的問題。 –

+0

相關的問題是[如何從模板以編程方式創建Word文檔](http://stackoverflow.com/q/4304238/4519059);)。 –

回答

2

原來,Add()想要一個完整的路徑:

wordApp.Documents.Add(Path.GetFullPath("somedoc.docx")); 

做工精細,既docxdotx文件。

+0

我遇到了同樣的問題,很煩人! – aguertin

0

使用.Add()添加新文件,並.Open()打開現有的文件。

https://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.documents.aspx

+0

我想根據現有的文件創建一個新文件。這裏使用'docx'作爲模板。基本上,'docx'和'dotx'之間的唯一區別是Word在打開它時的行爲。對於interop來說,這似乎沒有什麼區別。 –

+0

我一直沒有用過這些東西,但如果我正確地記得文檔本身沒有任何不同,從文件結構的角度來看。我懷疑你不會試圖在現有文檔上使用'.Add()'方法。 – maniak1982