2012-07-20 21 views
1

我有2個docx文檔,這些文檔在文檔級別是隻讀的。但是通過使用permStart和permEnd標籤來啓用這些文檔中幾個段落的編輯選項。刪除文檔docx中的permStart和permEnd標籤

我必須合併這兩個文件,並使新文件可編輯。我正在使用PowerTools DocumentBuilder合併這兩個docx。最終的docx是可編輯的,但由於存在permStart和permEnd標籤,所有段落都以灰色背景高亮顯示。

我想知道我們如何刪除這些permStart和permEnd標籤。我嘗試了下面的代碼,但沒有工作。

wordD.MainDocumentPart.Document.Body.RemoveAllChildren < PermStart>(); wordD.MainDocumentPart.Document.Body.RemoveAllChildren < PermEnd>();

我正在使用OpenXML SDK2.0,VS2010,.NET 4.0 & Powertools文檔生成器。任何幫助都會很棒。

謝謝!

回答

1

這是我刪除permStart和permEnd標記的方式。歡迎任何對以下代碼的改進。

   foreach (PermStart p1 in wordD.MainDocumentPart.Document.Body.Descendants<PermStart>()) 
       { 
        p1.Parent.RemoveChild<PermStart>(p1); 
       } 

       foreach (PermEnd p2 in wordD.MainDocumentPart.Document.Body.Descendants<PermEnd>()) 
       { 
        p2.Parent.RemoveChild<PermEnd>(p2); 
       } 
       wordD.MainDocumentPart.Document.Save(); 
2

您需要刪除文檔保護。除此之外,還需要刪除PermStart和PermEnd,因爲這些標記只有在文檔受到保護時纔是相關的。代碼將爲

  1. 刪除文檔保護。

    DocumentSettingsPart documentSettingsPart = wordprocessingDocument.MainDocumentPart.GetPartsOfType()。FirstOrDefault();

    if (documentSettingsPart != null) 
        { 
         documentSettingsPart.Settings.RemoveAllChildren<DocumentProtection>(); 
        } 
    
  2. 取出PermStart和PermEnd的標籤,你正在做的已經

    wordD.MainDocumentPart.Document.Body.RemoveAllChildren(); wordD.MainDocumentPart.Document.Body.RemoveAllChildren(); wordD.MainDocumentPart.Document.Save();