2012-07-26 24 views
9

Próbuję dodać nagłówek i stopkę do pustego dokumentu programu Word.Dodaj nagłówek i stopkę do istniejącego pustego dokumentu Word z pakietem OpenXML SDK 2.0

Używam tego kodu, aby dodać część nagłówka do słowa/document.xml przy zmianie docx na kod pocztowy.

 ApplyHeader(doc); 


     public static void ApplyHeader(WordprocessingDocument doc) 
     { 
      // Get the main document part. 
      MainDocumentPart mainDocPart = doc.MainDocumentPart; 

      // Delete the existing header parts. 
      mainDocPart.DeleteParts(mainDocPart.HeaderParts); 

      // Create a new header part and get its relationship id. 
      HeaderPart newHeaderPart = mainDocPart.AddNewPart<HeaderPart>(); 
      string rId = mainDocPart.GetIdOfPart(newHeaderPart); 

      // Call the GeneratePageHeaderPart helper method, passing in 
      // the header text, to create the header markup and then save 
      // that markup to the header part. 
      GeneratePageHeaderPart("Test1").Save(newHeaderPart); 

      // Loop through all section properties in the document 
      // which is where header references are defined. 
      foreach (SectionProperties sectProperties in 
       mainDocPart.Document.Descendants<SectionProperties>()) 
      { 
       // Delete any existing references to headers. 
       foreach (HeaderReference headerReference in 
        sectProperties.Descendants<HeaderReference>()) 
        sectProperties.RemoveChild(headerReference); 

       // Create a new header reference that points to the new 
       // header part and add it to the section properties. 
       HeaderReference newHeaderReference = 
        new HeaderReference() { Id = rId, Type = HeaderFooterValues.First }; 
       sectProperties.Append(newHeaderReference); 
      } 

      // Save the changes to the main document part. 
      mainDocPart.Document.Save(); 
     } 

    private static Header GeneratePageHeaderPart(string HeaderText) 
    { 
     var element = 
      new Header(
      new Paragraph(
       new ParagraphProperties(
       new ParagraphStyleId() { Val = "Header1" }), 
       new Run(
       new Text(HeaderText)) 
      ) 
     ); 

     return element; 
    } 

Ten kod działa, ale w słowie/_rels/document.xml.rels nie utworzono relacji nagłówka.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> 
    <Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings" Target="webSettings.xml"/> 
    <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings" Target="settings.xml"/> 
    <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/> 
    <Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/> 
    <Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable" Target="fontTable.xml"/> 
</Relationships> 

I nic więcej treści nagłówka wpisz [CONTENT_TYPES] .xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"> 
    <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/> 
    <Default Extension="xml" ContentType="application/xml"/> 
    <Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/> 
    <Override PartName="/word/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml"/> 
    <Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/> 
    <Override PartName="/word/settings.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml"/> 
    <Override PartName="/word/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/> 
    <Override PartName="/word/fontTable.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml"/> 
    <Override PartName="/word/webSettings.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml"/> 
    <Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/> 
</Types> 

Niemniej header.xml powstał w słowie/

<?xml version="1.0" encoding="utf-8"?><w:hdr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:p><w:pPr><w:pStyle w:val="Header1" /></w:pPr><w:r><w:t>Test1</w:t></w:r></w:p></w:hdr> 

A moje słowo/document.xml aby pokazać, że mój nagłówek został dodany.

<w:sectPr w:rsidR="003310CE" w:rsidSect="00D928B6"> 
<w:pgSz w:w="11906" w:h="16838" /> 
<w:pgMar w:top="1417" w:right="1417" w:bottom="1417" w:left="1417" w:header="708" w:footer="708" w:gutter="0" /> 
<w:cols w:space="708" /><w:docGrid w:linePitch="360" /> 
<w:headerReference w:type="first" r:id="Recfa318e6a7c44ff" /> 
</w:sectPr> 

Moje pytanie brzmi, jak poprawnie dodać nagłówek i stopkę?

Dzięki za pomoc.

Odpowiedz

1

Sam znajduję rozwiązanie.

W rzeczywistości, dodając nagłówek lub stopkę w docx z OPENXML polega, że:

Dokument musi istnieć.

Zapisanie i zamknięcie dokumentu przed dodaniem nagłówka lub stopki nie działa.

WordprocessingDocument document = WordprocessingDocument.Open(path, true); 
<operations on docx> 
document.Save(); 
document.Close(); 
ChangeHeader(document); 

Musisz ponownie otworzyć dokument docx, aby utworzyć nową instancję dokumentu.

Prawidłowe rozwiązanie będzie (z roztworem James Wood):

WordprocessingDocument document = WordprocessingDocument.Open(path, true); 
<operations on docx> 
document.Save(); 
document.Close(); 
ChangeHeader(path); 

    public static void ChangeHeader(String documentPath) 
    { 
     // Replace header in target document with header of source document. 
     using (WordprocessingDocument document = WordprocessingDocument.Open(documentPath, true)) 
     { 
      // Get the main document part 
      MainDocumentPart mainDocumentPart = document.MainDocumentPart; 

      // Delete the existing header and footer parts 
      mainDocumentPart.DeleteParts(mainDocumentPart.HeaderParts); 
      mainDocumentPart.DeleteParts(mainDocumentPart.FooterParts); 

      // Create a new header and footer part 
      HeaderPart headerPart = mainDocumentPart.AddNewPart<HeaderPart>(); 
      FooterPart footerPart = mainDocumentPart.AddNewPart<FooterPart>(); 

      // Get Id of the headerPart and footer parts 
      string headerPartId = mainDocumentPart.GetIdOfPart(headerPart); 
      string footerPartId = mainDocumentPart.GetIdOfPart(footerPart); 

      GenerateHeaderPartContent(headerPart); 

      GenerateFooterPartContent(footerPart); 

      // Get SectionProperties and Replace HeaderReference and FooterRefernce with new Id 
      IEnumerable<SectionProperties> sections = mainDocumentPart.Document.Body.Elements<SectionProperties>(); 

      foreach (var section in sections) 
      { 
       // Delete existing references to headers and footers 
       section.RemoveAllChildren<HeaderReference>(); 
       section.RemoveAllChildren<FooterReference>(); 

       // Create the new header and footer reference node 
       section.PrependChild<HeaderReference>(new HeaderReference() { Id = headerPartId }); 
       section.PrependChild<FooterReference>(new FooterReference() { Id = footerPartId }); 
      } 
     } 
    } 


public static void GenerateHeaderPartContent(HeaderPart part) 
     { 
      Header header1 = new Header() { MCAttributes = new MarkupCompatibilityAttributes() { Ignorable = "w14 wp14" } }; 
      header1.AddNamespaceDeclaration("wpc", "http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas"); 
      header1.AddNamespaceDeclaration("mc", "http://schemas.openxmlformats.org/markup-compatibility/2006"); 
      header1.AddNamespaceDeclaration("o", "urn:schemas-microsoft-com:office:office"); 
      header1.AddNamespaceDeclaration("r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"); 
      header1.AddNamespaceDeclaration("m", "http://schemas.openxmlformats.org/officeDocument/2006/math"); 
      header1.AddNamespaceDeclaration("v", "urn:schemas-microsoft-com:vml"); 
      header1.AddNamespaceDeclaration("wp14", "http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing"); 
      header1.AddNamespaceDeclaration("wp", "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"); 
      header1.AddNamespaceDeclaration("w10", "urn:schemas-microsoft-com:office:word"); 
      header1.AddNamespaceDeclaration("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main"); 
      header1.AddNamespaceDeclaration("w14", "http://schemas.microsoft.com/office/word/2010/wordml"); 
      header1.AddNamespaceDeclaration("wpg", "http://schemas.microsoft.com/office/word/2010/wordprocessingGroup"); 
      header1.AddNamespaceDeclaration("wpi", "http://schemas.microsoft.com/office/word/2010/wordprocessingInk"); 
      header1.AddNamespaceDeclaration("wne", "http://schemas.microsoft.com/office/word/2006/wordml"); 
      header1.AddNamespaceDeclaration("wps", "http://schemas.microsoft.com/office/word/2010/wordprocessingShape"); 

      Paragraph paragraph1 = new Paragraph() { RsidParagraphAddition = "00164C17", RsidRunAdditionDefault = "00164C17" }; 

      ParagraphProperties paragraphProperties1 = new ParagraphProperties(); 
      ParagraphStyleId paragraphStyleId1 = new ParagraphStyleId() { Val = "Header" }; 

      paragraphProperties1.Append(paragraphStyleId1); 

      Run run1 = new Run(); 
      Text text1 = new Text(); 
      text1.Text = "Header"; 

      run1.Append(text1); 

      paragraph1.Append(paragraphProperties1); 
      paragraph1.Append(run1); 

      header1.Append(paragraph1); 

      part.Header = header1; 
     } 

     public static void GenerateFooterPartContent(FooterPart part) 
     { 
      Footer footer1 = new Footer() { MCAttributes = new MarkupCompatibilityAttributes() { Ignorable = "w14 wp14" } }; 
      footer1.AddNamespaceDeclaration("wpc", "http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas"); 
      footer1.AddNamespaceDeclaration("mc", "http://schemas.openxmlformats.org/markup-compatibility/2006"); 
      footer1.AddNamespaceDeclaration("o", "urn:schemas-microsoft-com:office:office"); 
      footer1.AddNamespaceDeclaration("r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"); 
      footer1.AddNamespaceDeclaration("m", "http://schemas.openxmlformats.org/officeDocument/2006/math"); 
      footer1.AddNamespaceDeclaration("v", "urn:schemas-microsoft-com:vml"); 
      footer1.AddNamespaceDeclaration("wp14", "http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing"); 
      footer1.AddNamespaceDeclaration("wp", "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"); 
      footer1.AddNamespaceDeclaration("w10", "urn:schemas-microsoft-com:office:word"); 
      footer1.AddNamespaceDeclaration("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main"); 
      footer1.AddNamespaceDeclaration("w14", "http://schemas.microsoft.com/office/word/2010/wordml"); 
      footer1.AddNamespaceDeclaration("wpg", "http://schemas.microsoft.com/office/word/2010/wordprocessingGroup"); 
      footer1.AddNamespaceDeclaration("wpi", "http://schemas.microsoft.com/office/word/2010/wordprocessingInk"); 
      footer1.AddNamespaceDeclaration("wne", "http://schemas.microsoft.com/office/word/2006/wordml"); 
      footer1.AddNamespaceDeclaration("wps", "http://schemas.microsoft.com/office/word/2010/wordprocessingShape"); 

      Paragraph paragraph1 = new Paragraph() { RsidParagraphAddition = "00164C17", RsidRunAdditionDefault = "00164C17" }; 

      ParagraphProperties paragraphProperties1 = new ParagraphProperties(); 
      ParagraphStyleId paragraphStyleId1 = new ParagraphStyleId() { Val = "Footer" }; 

      paragraphProperties1.Append(paragraphStyleId1); 

      Run run1 = new Run(); 
      Text text1 = new Text(); 
      text1.Text = "Footer"; 

      run1.Append(text1); 

      paragraph1.Append(paragraphProperties1); 
      paragraph1.Append(run1); 

      footer1.Append(paragraph1); 

      part.Footer = footer1; 
     } 
22

Jestem całkiem pewien, co jest nie tak z twoim kodem, podejrzewam, że tak zmieniasz odniesienia.

W każdym razie mam działający przykład, który, mam nadzieję, poprowadzi. Kopalnia

Mam oparte na przykładach tutaj: http://msdn.microsoft.com/en-us/library/office/cc546917.aspx

użyłem Open XML SDK 2.0 Produktywność Narzędzie do generowania części nagłówka i stopki. Najpierw tworzę dokument z żądanym układem, następnie otwieram go za pomocą narzędzia, generuje kod XML lub kod. Możesz go pobrać tutaj: http://www.microsoft.com/en-us/download/details.aspx?id=5124

Jedynym zastrzeżeniem jest to, że przyjmuje dokument już pewne treści w ciele, jedna litera zrobi. Nie jestem pewien, czy można tego uniknąć, próbowałem otworzyć pusty dokument w narzędziu produktywności i cierpiał z powodu tego samego błędu - "Nie można otworzyć pliku: plik archiwum nie może mieć rozmiaru 0". W mojej próbce zawiedzie on na WordprocessingDocument.Open.

Być może w przypadku pustego dokumentu musisz najpierw utworzyć ciało. W każdym razie podejrzewam, że głównym celem tego pytania jest dodanie nagłówka i stopki, więc uważam, że jest to poprawna odpowiedź.

Jeśli chcesz, mogę podać rzeczywiste pliki cs/project.

Mam nadzieję, że to pomoże.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using DocumentFormat.OpenXml.Packaging; 
using DocumentFormat.OpenXml.Wordprocessing; 
using DocumentFormat.OpenXml; 

namespace HeaderFooterDocX 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      ChangeHeader(@"C:\Users\James\Desktop\Document.docx"); 
     } 

     static void ChangeHeader(String documentPath) 
     { 
      // Replace header in target document with header of source document. 
      using (WordprocessingDocument document = WordprocessingDocument.Open(documentPath, true)) 
      { 
       // Get the main document part 
       MainDocumentPart mainDocumentPart = document.MainDocumentPart; 

       // Delete the existing header and footer parts 
       mainDocumentPart.DeleteParts(mainDocumentPart.HeaderParts); 
       mainDocumentPart.DeleteParts(mainDocumentPart.FooterParts); 

       // Create a new header and footer part 
       HeaderPart headerPart = mainDocumentPart.AddNewPart<HeaderPart>(); 
       FooterPart footerPart = mainDocumentPart.AddNewPart<FooterPart>(); 

       // Get Id of the headerPart and footer parts 
       string headerPartId = mainDocumentPart.GetIdOfPart(headerPart); 
       string footerPartId = mainDocumentPart.GetIdOfPart(footerPart); 

       GenerateHeaderPartContent(headerPart); 

       GenerateFooterPartContent(footerPart); 

       // Get SectionProperties and Replace HeaderReference and FooterRefernce with new Id 
       IEnumerable<SectionProperties> sections = mainDocumentPart.Document.Body.Elements<SectionProperties>(); 

       foreach (var section in sections) 
       { 
        // Delete existing references to headers and footers 
        section.RemoveAllChildren<HeaderReference>(); 
        section.RemoveAllChildren<FooterReference>(); 

        // Create the new header and footer reference node 
        section.PrependChild<HeaderReference>(new HeaderReference() { Id = headerPartId }); 
        section.PrependChild<FooterReference>(new FooterReference() { Id = footerPartId }); 
       } 
      } 
     } 

     static void GenerateHeaderPartContent(HeaderPart part) 
     { 
      Header header1 = new Header() { MCAttributes = new MarkupCompatibilityAttributes() { Ignorable = "w14 wp14" } }; 
      header1.AddNamespaceDeclaration("wpc", "http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas"); 
      header1.AddNamespaceDeclaration("mc", "http://schemas.openxmlformats.org/markup-compatibility/2006"); 
      header1.AddNamespaceDeclaration("o", "urn:schemas-microsoft-com:office:office"); 
      header1.AddNamespaceDeclaration("r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"); 
      header1.AddNamespaceDeclaration("m", "http://schemas.openxmlformats.org/officeDocument/2006/math"); 
      header1.AddNamespaceDeclaration("v", "urn:schemas-microsoft-com:vml"); 
      header1.AddNamespaceDeclaration("wp14", "http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing"); 
      header1.AddNamespaceDeclaration("wp", "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"); 
      header1.AddNamespaceDeclaration("w10", "urn:schemas-microsoft-com:office:word"); 
      header1.AddNamespaceDeclaration("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main"); 
      header1.AddNamespaceDeclaration("w14", "http://schemas.microsoft.com/office/word/2010/wordml"); 
      header1.AddNamespaceDeclaration("wpg", "http://schemas.microsoft.com/office/word/2010/wordprocessingGroup"); 
      header1.AddNamespaceDeclaration("wpi", "http://schemas.microsoft.com/office/word/2010/wordprocessingInk"); 
      header1.AddNamespaceDeclaration("wne", "http://schemas.microsoft.com/office/word/2006/wordml"); 
      header1.AddNamespaceDeclaration("wps", "http://schemas.microsoft.com/office/word/2010/wordprocessingShape"); 

      Paragraph paragraph1 = new Paragraph() { RsidParagraphAddition = "00164C17", RsidRunAdditionDefault = "00164C17" }; 

      ParagraphProperties paragraphProperties1 = new ParagraphProperties(); 
      ParagraphStyleId paragraphStyleId1 = new ParagraphStyleId() { Val = "Header" }; 

      paragraphProperties1.Append(paragraphStyleId1); 

      Run run1 = new Run(); 
      Text text1 = new Text(); 
      text1.Text = "Header"; 

      run1.Append(text1); 

      paragraph1.Append(paragraphProperties1); 
      paragraph1.Append(run1); 

      header1.Append(paragraph1); 

      part.Header = header1; 
     } 

     static void GenerateFooterPartContent(FooterPart part) 
     { 
      Footer footer1 = new Footer() { MCAttributes = new MarkupCompatibilityAttributes() { Ignorable = "w14 wp14" } }; 
      footer1.AddNamespaceDeclaration("wpc", "http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas"); 
      footer1.AddNamespaceDeclaration("mc", "http://schemas.openxmlformats.org/markup-compatibility/2006"); 
      footer1.AddNamespaceDeclaration("o", "urn:schemas-microsoft-com:office:office"); 
      footer1.AddNamespaceDeclaration("r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"); 
      footer1.AddNamespaceDeclaration("m", "http://schemas.openxmlformats.org/officeDocument/2006/math"); 
      footer1.AddNamespaceDeclaration("v", "urn:schemas-microsoft-com:vml"); 
      footer1.AddNamespaceDeclaration("wp14", "http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing"); 
      footer1.AddNamespaceDeclaration("wp", "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"); 
      footer1.AddNamespaceDeclaration("w10", "urn:schemas-microsoft-com:office:word"); 
      footer1.AddNamespaceDeclaration("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main"); 
      footer1.AddNamespaceDeclaration("w14", "http://schemas.microsoft.com/office/word/2010/wordml"); 
      footer1.AddNamespaceDeclaration("wpg", "http://schemas.microsoft.com/office/word/2010/wordprocessingGroup"); 
      footer1.AddNamespaceDeclaration("wpi", "http://schemas.microsoft.com/office/word/2010/wordprocessingInk"); 
      footer1.AddNamespaceDeclaration("wne", "http://schemas.microsoft.com/office/word/2006/wordml"); 
      footer1.AddNamespaceDeclaration("wps", "http://schemas.microsoft.com/office/word/2010/wordprocessingShape"); 

      Paragraph paragraph1 = new Paragraph() { RsidParagraphAddition = "00164C17", RsidRunAdditionDefault = "00164C17" }; 

      ParagraphProperties paragraphProperties1 = new ParagraphProperties(); 
      ParagraphStyleId paragraphStyleId1 = new ParagraphStyleId() { Val = "Footer" }; 

      paragraphProperties1.Append(paragraphStyleId1); 

      Run run1 = new Run(); 
      Text text1 = new Text(); 
      text1.Text = "Footer"; 

      run1.Append(text1); 

      paragraph1.Append(paragraphProperties1); 
      paragraph1.Append(run1); 

      footer1.Append(paragraph1); 

      part.Footer = footer1; 
     } 
    } 
} 
+0

Cześć! Czy masz podobny kod do arkusza kalkulacyjnego Excel? A może mógłbyś mi wskazać kierunek wyszukiwania? Naprawdę nie mogę znaleźć niczego o zmianie nagłówka/stopki przez OpenXML w C#. – epema

7

ten kod pracował dla mnie. Weź pod uwagę:

  1. Relacja nagłówka Id to "r97" w moim przykładzie. Być może chciałbyś zadecydować o unikalnym rId na swoim własnym
  2. samym dla relationshipId stopki ("r98")
  3. Zarówno nagłówek, jak i stopka mają zakodowany akapit z pewnym tekstem.
  4. jestem zakładając już istnieje dokument

      using (WordprocessingDocument doc = WordprocessingDocument.Open(destination, true)) 
          { 
           var mainDocPart = doc.MainDocumentPart; 
           if (doc == null) { 
            mainDocPart = doc.AddMainDocumentPart(); 
           } 
    
           if (mainDocPart.Document == null) 
           { 
            mainDocPart.Document = new Document(); 
           } 
    
           ApplyHeader(doc); 
    
           ApplyFooter(doc); 
          } 
    

metoda ApplyHeader:

public static void ApplyHeader(WordprocessingDocument doc) 
     { 
      // Get the main document part. 
      MainDocumentPart mainDocPart = doc.MainDocumentPart; 

      HeaderPart headerPart1 = mainDocPart.AddNewPart<HeaderPart>("r97"); 



      Header header1 = new Header(); 

      Paragraph paragraph1 = new Paragraph(){ }; 



      Run run1 = new Run(); 
      Text text1 = new Text(); 
      text1.Text = "Header stuff"; 

      run1.Append(text1); 

      paragraph1.Append(run1); 


      header1.Append(paragraph1); 

      headerPart1.Header = header1; 



      SectionProperties sectionProperties1 = mainDocPart.Document.Body.Descendants<SectionProperties>().FirstOrDefault(); 
      if (sectionProperties1 == null) 
      { 
       sectionProperties1 = new SectionProperties() { }; 
       mainDocPart.Document.Body.Append(sectionProperties1); 
      } 
      HeaderReference headerReference1 = new HeaderReference() { Type = HeaderFooterValues.Default, Id = "r97" }; 


      sectionProperties1.InsertAt(headerReference1,0); 

     } 

metoda ApplyFooter:

public static void ApplyFooter(WordprocessingDocument doc) 
     { 
      // Get the main document part. 
      MainDocumentPart mainDocPart = doc.MainDocumentPart; 

      FooterPart footerPart1 = mainDocPart.AddNewPart<FooterPart>("r98"); 



      Footer footer1 = new Footer(); 

      Paragraph paragraph1 = new Paragraph() { }; 



      Run run1 = new Run(); 
      Text text1 = new Text(); 
      text1.Text = "Footer stuff"; 

      run1.Append(text1); 

      paragraph1.Append(run1); 


      footer1.Append(paragraph1); 

      footerPart1.Footer = footer1; 



      SectionProperties sectionProperties1 = mainDocPart.Document.Body.Descendants<SectionProperties>().FirstOrDefault(); 
      if (sectionProperties1 == null) 
      { 
       sectionProperties1 = new SectionProperties() { }; 
       mainDocPart.Document.Body.Append(sectionProperties1); 
      } 
      FooterReference footerReference1 = new FooterReference() { Type = DocumentFormat.OpenXml.Wordprocessing.HeaderFooterValues.Default, Id = "r98" }; 


      sectionProperties1.InsertAt(footerReference1, 0); 

     } 

Enjoy,

Powiązane problemy