2017-04-06 106 views
0

我正在使用此代碼創建Word文件以編程方式使用Microsoft.interop.word C#,當我創建它時,我有一個問題,它重複第一頁的標題到文檔的所有頁面,我如何設置它來爲文檔的第一頁添加頁眉?使用Microsoft.office.Interop.Word創建Word文件

,這就是我的代碼:

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 

回答

0

我相信你正在尋找其他wdHeaderFooterIndex財產wdHeaderFooterFirstPage是你正在尋找的人。感謝@ Arun在Different First Page in a document using microsoft office interop word in c#的回答...您將看到您還需要將文檔PageSetup.DifferentFirstPageHeaderFooter的值設置爲-1。

只需將以下第一行添加到代碼中,並更改代碼中的第二行以僅獲取第一頁的標題範圍。

document.PageSetup.DifferentFirstPageHeaderFooter = -1; // <-- add this line 
Microsoft.Office.Interop.Word.Range headerRange = section.Headers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterFirstPage].Range; 
//Microsoft.Office.Interop.Word.Range headerRange = section.Headers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range; 

這應該讓標題只顯示在每個部分的第一頁上。希望這可以幫助。

+0

是的,這對我很有幫助,非常感謝。 –

相關問題