2014-02-19 5 views
2

OpenXML SDK 2.5를 사용하여 빈 Word 문서 (DOCX)를 만들려고합니다. MainDocumentPart가 null이므로 다음 코드는 작동하지 않습니다.새 빈 Word 문서 만들기

public static void CreateEmptyDocxFile(string fileName, bool overrideExistingFile) 
    { 
     if (System.IO.File.Exists(fileName)) 
     { 
      if (!overrideExistingFile) 
       return; 
      else 
       System.IO.File.Delete(fileName); 
     } 

     using (WordprocessingDocument document = WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document)) 
     { 
      const string docXml = 
     @"<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?> 
      <w:document xmlns:w=""http://schemas.openxmlformats.org/wordprocessingml/2006/main""> 
       <w:body> 
        <w:p> 
         <w:r> 
          <w:t></w:t> 
         </w:r> 
        </w:p> 
       </w:body> 
      </w:document>"; 

      using (Stream stream = document.MainDocumentPart.GetStream()) 
      { 
       byte[] buf = (new UTF8Encoding()).GetBytes(docXml); 
       stream.Write(buf, 0, buf.Length); 
      } 
     } 
    } 

답변

6

그런 다음 XML 문자열을 작성 OpenXML과 클래스를 사용하는 것이 훨씬 쉽다. 이것을 시도하십시오 :

using (WordprocessingDocument document = WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document)) 
{ 
    MainDocumentPart mainPart = document.AddMainDocumentPart(); 
    mainPart.Document = new Document(new Body()); 
    //... add your p, t, etc using mainPart.Document.Body.AppendChild(...); 

    //seems like there is no need in this call as it is a creation process 
    //document.MainDocumentPart.Document.Save(); 
} 
+0

고맙습니다. 그런 식으로 시도해 봤는데 .Save();를 호출 할 필요가 없습니다. 창작 이래로 – yazanpro

+0

멋지고 감사합니다. – JleruOHeP