2010-12-02 4 views
2

DOCX 파일에서 doc 개의 변수를 제거하려고합니다. 여기에 내가 사용하고 코드이지만, 어떤을 제거하지 않습니다 ...OpenXML DOCX에 대한 문서 변수 제거?

을이 전체 코드입니다 :

class Program 
    { 
     static void Main(string[] args) 
     { 
      string filePath = "C:\\..\\..sample.docx"; 
      Remove removedocvars = new Remove(); 
      removedocvars.RemoveDocVariables(filePath); 

     } 
    } 

//method to remove doc vars 
    public void RemoveDocVariables(string fileName) 
     { 
      using (WordprocessingDocument doc = WordprocessingDocument.Open(fileName, true)) 
      { 

       List<DocumentVariables> DocVarsToDelete = doc.MainDocumentPart.RootElement.Descendants<DocumentVariables>().ToList(); 
       foreach (DocumentVariables dc in DocVarsToDelete) 
       { 
        dc.Remove(); 
       } 
       doc.MainDocumentPart.Document.Save(); 
      } 
     } 

답변

0

이 코드의 범위 인 경우에, 당신은하지 않습니다 save 메소드 호출이 누락 되었습니까? 같은

뭔가 : 당신이 MainDocumentPart.DocumentSettingsPart.Settings.Descendants <를 사용해야하므로 변수의 Settings.XML의 파일에

foreach (DocumentVariable dc in DocVarsToDelete) 
    { 
     dc.Remove(); 
    } 
    document.Save(); 
+0

AFAIK '저장'은 이후 버전의 SDK에서 문서를 삭제할 때 자동으로 호출됩니다. –

+0

잘 알고 있습니다. 다른 샘플 코드 (Using 블록을 사용하지 않았 음)를보고 메소드가 누락되었음을 확인했습니다. – PhillFox

+0

잘. 내 전체 코드에는 document.Save()가 포함되어 있으며 여전히 작동하지 않습니다. 그래서 문서 변수를 제거하는 다른 방법이 있는지 궁금합니다. – stazera

1

>().

public void RemoveDocVariables(string fileName) 
{ 
    using (var doc = WordprocessingDocument.Open(fileName, true)) 
    { 
     doc.MainDocumentPart.DocumentSettingsPart.Settings.RemoveAllChildren<DocumentVariables>(); 
    } 
} 
0

이 질문은 6 년 전의 질문이지만, 답변을 추가하는 것이 여전히 가치 있다고 생각합니다. 가능성이 관련되어 문제 :

https://github.com/OfficeDev/Open-XML-SDK/issues/198

https://github.com/OfficeDev/Open-XML-SDK/issues/222

OpenXML을 적용하고 위의 링크 중 하나에 언급 된 패치까지 메커니즘에 접근의 혼합을 좋아하지하는 데 사용.

+0

Github 링크는 아마도 약간 지속될지라도, 링크가 사라지면 응답에 대한 링크를 추가하는 것이 유용 할 것입니다. – disinfor