2017-04-06 1 views
0

Ich verwende diesen Code, um Word-Datei programmgesteuert mit Microsoft.interop.word C# erstellen, wenn ich es erstellen, habe ich ein Problem, dass es die Überschrift der ersten Seite wiederholen auf allen Seiten der Dokumente, Wie kann ich einstellen, dass nur die Kopfzeile für die erste Seite des Dokuments gesetzt wird?Erstellen Sie Word-Datei mit Microsoft.office.Interop.Word

und das ist mein Code:

public void create_Document() 
    { 
     try 
     { 
      //Create an instance for word app 
      Microsoft.Office.Interop.Word.Application winword = new Microsoft.Office.Interop.Word.Application(); 

      //Set animation status for word application 
      winword.ShowAnimation = false; 

      //Set status for word application is to be visible or not. 
      winword.Visible = false; 

      //Create a missing variable for missing value 
      object missing = System.Reflection.Missing.Value; 

      //Create a new document 
      Microsoft.Office.Interop.Word.Document document = winword.Documents.Add(ref missing, ref missing, ref missing, ref missing); 

      //Add header into the document 
      foreach (Microsoft.Office.Interop.Word.Section section in document.Sections) 
      { 
       //Get the header range and add the header details. 
       Microsoft.Office.Interop.Word.Range headerRange = section.Headers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range; 
       headerRange.Fields.Add(headerRange, Microsoft.Office.Interop.Word.WdFieldType.wdFieldPage); 
       headerRange.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; 
       headerRange.Font.ColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdBlue; 
       headerRange.Font.Size = 30; 
       headerRange.Text = "Exam Dates for the " + course_name; 
       section.Borders.Enable = 1; 
       section.Borders.OutsideLineStyle = WdLineStyle.wdLineStyleSingle; 
       section.Borders.OutsideLineWidth = WdLineWidth.wdLineWidth300pt; 
       section.Borders.OutsideColor = WdColor.wdColorBlack; 

      } 



      //adding text to document 
      document.Content.SetRange(0, 0); 
      // document.Content.Text = "Exam Dates :" + Environment.NewLine; 

      //Add paragraph with Heading 1 style 
      Microsoft.Office.Interop.Word.Paragraph para1 = document.Content.Paragraphs.Add(ref missing); 
      object styleHeading1 = "Heading 1"; 
      para1.Range.set_Style(ref styleHeading1); 
      para1.Range.Text = "Exam Dates"; 
      para1.Range.InsertParagraphAfter(); 



      //Create a 5X5 table and insert some dummy record 
      // Microsoft.Office.Interop.Word.Table firstTable = document.Tables.Add(para1.Range, 4,2, ref missing, ref missing); 
      Microsoft.Office.Interop.Word.Table firstTable = document.Tables.Add(para1.Range, 1, 2, ref missing, ref missing); 

      firstTable.Borders.Enable = 1; 

      firstTable.Cell(1, 1).Range.Text = "Exam Name"; 
      firstTable.Cell(1, 2).Range.Text = "Exam Date"; 
      connection.Close(); 
      connection.Open(); 
      SqlCommand cmd = new SqlCommand("select ExamName,Date from Exam where CourseNum='" + course_number + "'", connection); 
      SqlDataReader reader = cmd.ExecuteReader(); 

      int intRow = 2; 

      // Retrieve the data and insert into new rows. 
      Object beforeRow = Type.Missing; 
      string[] dates; 
      while (reader.Read()) 
      { 
       dates = reader[1].ToString().Split(' '); 
       firstTable.Rows.Add(ref beforeRow); 
       firstTable.Cell(intRow, 1).Range.Text = reader[0].ToString(); 
       firstTable.Cell(intRow, 2).Range.Text = dates[0]; 

       intRow += 1; 
      } 
      //Save the document 
      object filename = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\Attachments\\Exams.docx"; 
      document.SaveAs2(ref filename); 

      // document.Save(); 
      ((Microsoft.Office.Interop.Word._Document)document).Close(ref missing, ref missing, ref missing); 
      ((Microsoft.Office.Interop.Word._Application)winword).Quit(ref missing, ref missing, ref missing); 
} 
     catch (Exception ex) 
     { 
      ex.ToString(); 
     } 


     }//create document 

Antwort

0

Ich glaube, Sie suchen die anderen wdHeaderFooterIndex Eigenschaft wdHeaderFooterFirstPage ist diejenige, die Sie für suchen. Danke an @ Aruns Antwort unter Different First Page in a document using microsoft office interop word in c# ... Sie werden sehen, dass Sie auch die Dokumente PageSetup.DifferentFirstPageHeaderFooter Wert auf -1 setzen müssen.

Fügen Sie einfach die erste Zeile unter dem Code hinzu und ändern Sie die zweite Zeile im Code, um nur den Header-Bereich für die erste Seite zu erhalten.

Dies sollte die Überschrift nur auf der ersten Seite jedes Abschnitts angezeigt werden. Hoffe das hilft.

+0

ja, das hilft mir, vielen Dank. –

Verwandte Themen