2017-03-03 23 views
2

我正在與Word交互的應用程序中工作。我們在我們的數據庫中導入文檔,然後允許用戶使用Microsoft Word通過NetOffice.WordApi修改這些文檔。如何使用c#刪除Word文檔中的「只讀推薦」選項?

當文檔被標記爲只讀,每次打開時,我們都會遇到一些問題,我們會得到一個「另存爲」文字對話框,讓您可以選擇創建文檔的臨時副本,以便讓您文檔中的更改。

我的問題如下:如何刪除文件的只讀文字標記並重新保存沒有標記的文件?我可以按照以下鏈接中的說明手動從單詞中刪除選項,但我想通過代碼自動完成該過程。

The author would like you to open this as read-only

**請回答之前注意下列事項:這不是在窗口級文件中的只讀屬性,它不是與Windows permision attibute的問題。文件屬性不是隻讀屬性位於word文檔中。因此,通過代碼更改windows文件permision屬性不起作用,實際上,當您在Windows中檢查文件屬性時文件不是隻讀的,它是一個字屬性,這意味着作者在保存文檔時將其標記爲只讀並會阻止你使用word來修改文件(文件可以使用不同的軟件進行更改,它只是對於文字而言是隻讀的)。請不要給我發送有關如何在Windows中更改權限的鏈接,而不是這種情況,請查看鏈接瞭解更多信息。 **

非常感謝您的時間。

+0

聽起來像它的你如何在NetOffice.WordApi保存的問題? –

+0

這實際上並不重要,該文件是在Word中創建的,然後通過將文件內容保存到數據庫中導入到我們的應用程序中。在您將文件的內容保存到數據庫中之前,甚至在使用NetOffice實際打開該文件之前,此修復程序都將實施。這個想法是,在刪除標記後,當您使用NetOffice打開文件時,當您調用Word來編輯文件時,您不會得到「另存爲」。當您首次使用Microsoft Word在應用程序外部創建並保存文檔時,會分配只讀選項。 – Kymuweb

回答

2

要設置的選項是Word文檔的Document.ReadOnlyRecommended屬性。

當您打開Word文檔時,實際上可以使用Document.Open方法中的第三個參數設置ReadOnly屬性。但是,該參數不會覆蓋保存文檔上的只讀建議設置。因此,如果您的文檔使用只讀推薦選項進行保存,則在致電Document.Open時,它將以只讀方式打開。

所以我認爲,你有兩個選擇:

選項1

設置Document.ReadOnlyRecommended之前保存文檔首次,類似這樣的

objDoc.ReadOnlyRecommended = false; 


選項2

如果已將文檔設置爲只讀建議,則需要將文檔另存爲新文件,並使用Document.SaveAs2方法將Document.ReadOnlyRecommended屬性設置爲false。

您的代碼可能是這樣的:

 object missing = System.Reflection.Missing.Value; 
     object readOnly = false; 
     object fileName = @"C:\User\MyFile.docx"; 
     object newFileName = @"C:\User\MyNewFile.docx"; 

     var objApp = new Application(); 
     var objDoc = objApp.Documents.Open(ref fileName, ref missing, ref readOnly); 

     if (objDoc.ReadOnlyRecommended) 
     { 
      objDoc.SaveAs2(ref newFileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref readOnly); 
     } 
     objDoc.Close(); 
     objApp.Quit(); 
+0

它工作完美!非常感謝!! – Kymuweb

相關問題