2013-07-29 1 views
5

오픈 XML 워드 프로세싱을 사용하여 단락에 미리 정의 된 스타일을 추가하는 방법을 안내해 줄 수 있습니까? 포럼에서 사용할 수있는 다양한 솔루션을 시도했지만 나에게 맞는 것은 없습니다. 여기 내가 성취하고자하는 바가 있습니다 :OpenXML 워드 프로세싱 문서에 단락 스타일 (Heading1, Heading2, Head 3 Etc) 추가

   // Create a document by supplying the filepath. 
       WordprocessingDocument wordDocument = WordprocessingDocument.Create("E:/Test/Executive.Docx", WordprocessingDocumentType.Document); 

       // Add a main document part. 
       MainDocumentPart mainPart = wordDocument.AddMainDocumentPart(); 

       // Create the document structure and add some text. 
       mainPart.Document = new Document(); 
       Body body = mainPart.Document.AppendChild(new Body()); 
       Paragraph para = body.AppendChild(new Paragraph()); 

       Run run = para.AppendChild(new Run()); 
       run.AppendChild(new Text("Executive Summary")); 
       if (para.Elements<ParagraphProperties>().Count() == 0) 
        para.PrependChild<ParagraphProperties>(new ParagraphProperties()); 

       // Get the ParagraphProperties element of the paragraph. 
       ParagraphProperties pPr = para.Elements<ParagraphProperties>().First(); 

       // Set the value of ParagraphStyleId to "Heading3". 
       pPr.ParagraphStyleId = new ParagraphStyleId() { Val = "Heading1" }; 

답변

7

기존의 문서를 편집하고 있다면 기술은 완전히 작동 할 것입니다. 문제는 새 문서에 미리 정의 된 "제목 1"이 없다는 것입니다. 그것을 추가해야합니다. 기존 템플릿 문서

도심에 사용할 수있는 템플릿 문서 (TemplatePath) 만들기와

1 일 : 그래서 당신은 두 가지 선택이있다. 코드에서 최종 대상 (FinalPath)에 복사하고 스타일을 적용하여 텍스트/무엇이든 추가하십시오. 제목 1은 이미 템플릿에 있습니다.

if (File.Exists(FinalPath)) 
    File.Delete(FinalPath); 
File.Copy(TemplatePath, FinalPath); 
WordprocessingDocument wordDocument = WordprocessingDocument.Open(FinalPath, true); 
Paragraph para = body.AppendChild(new Paragraph()); 
Run run = para.AppendChild(new Run()); 
run.AppendChild(new Text("Executive Summary")); 
para.ParagraphProperties = new ParagraphProperties(new ParagraphStyleId() { Val="Heading1" }); 

2.이 작업을 수행하는 경우가 더 내장 스타일을지지 않습니다 처음

에서 새 문서를 만듭니다. 그래서 스타일을 만들고, 그것을 "제목 1"이라고 부르며 그것을 단락에 적용하십시오. > 참조

WordprocessingDocument wordDocument = WordprocessingDocument.Create(FinalPath, WordprocessingDocumentType.Document); 
MainDocumentPart mainPart = wordDocument.AddMainDocumentPart(); 
mainPart.Document = new Document(); 
Body body = mainPart.Document.AppendChild(new Body()); 
Paragraph para = body.AppendChild(new Paragraph()); 
Run run = para.AppendChild(new Run()); 
run.AppendChild(new Text("Executive Summary")); 
StyleDefinitionPart styleDefinitionsPart = wordDocument.AddStylesDefinitionPart(); 
Styles styles = styleDefinitionsPart.Styles; 
Style style = new Style() { 
    Type = StyleValues.Paragraph, 
    StyleId = styleid, 
    CustomStyle = true 
}; 
StyleName styleName1 = new StyleName() { Val = "Heading1" }; 
style.Append(styleName1); 
StyleRunProperties styleRunProperties1 = new StyleRunProperties(); 
styleRunProperties1.Append(new Bold); 
styleRunProperties1.Append(new Italic()); 
styleRunProperties1.Append(new RunFonts() { Ascii = "Lucida Console" };); 
styleRunProperties1.Append(new FontSize() { Val = "24" }); // Sizes are in half-points. Oy! 
style.Append(styleRunProperties1); 
styles.Append(style); 
pPr.ParagraphStyleId = new ParagraphStyleId(){ Val = "Heading1" }; 
para.PrependChild<ParagraphProperties>(new ParagraphProperties()); 

< 풍자? OpenXML은 케이크 조각입니다! </sarcasm > 맹세코, 내 눈이 너무 강하게 두통이 나네.

+1

StyleDefinitionPart는 StyleDefinitionsPart 여야합니다. –

0

(내 영어 SRY는) 나는 당신의 단어를 사용 어떤 언어를 의존하는 스타일의 이름을 생각합니다.

영어 스타일의 ID에 제목 1 : Hungarien에 "제목 1": "Címsor 1"-> stlye 자료 : "Cmsor1는"

나는, 그 DOCX의 XML 스타일 파일을 보았다. WinRAR과로 열고 "sample.rar"
  • "sample.rar"의 이름을 변경

    1. "sample.docx":이 solove 어떻게

      .
    2. "word"폴더를 엽니 다.
    3. "style.xml"파일을 엽니 다.
    4. 그리고 필요한 스타일 이름이나 속성을 검색하십시오.

    스타일 계층 구조가 매우 중요합니다.

    나를위한 테이블 스타일이기도합니다.

  • 관련 문제