2017-04-06 3 views
0

このコードを使用して、Microsoft.interop.word C#を使用してプログラムでWordファイルを作成しています。作成すると、最初のページのヘッダーが繰り返されるという問題がありますドキュメントのすべてのページに、ドキュメントの最初のページのヘッダーのみを挿入するように設定する方法はありますか?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に設定する必要があります。

コードに最初の行を追加し、コードの2行目を変更して最初のページのヘッダー範囲のみを取得します。

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

はい、それは私に役立ちます、ありがとうございました。 –

関連する問題