How to Create Word Document Using C#

This article shows how to create a Word document using C# and Office 2013.

Step 1: Create a simple Windows application and place a button control in it.
 
Step 2: Double-click the button control and go to the code widow.

Step 3: Add a reference for "Microsoft.Office.Interop.Word" as shown in the following image.
 
Clipboard02.jpg

Step 4: Copy and paste the following code to generate the Word document.
 
The code is self-explanatory and the required comments are added wherever they are required.
  1. private void button1_Click(object sender, EventArgs e)  
  2. {  
  3.     CreateDocument();  
  4. }  
  5.   
  6. //Create document method  
  7. private void CreateDocument()  
  8. {  
  9.     try  
  10.     {  
  11.         //Create an instance for word app  
  12.         Microsoft.Office.Interop.Word.Application winword = new Microsoft.Office.Interop.Word.Application();  
  13.   
  14.         //Set animation status for word application  
  15.         winword.ShowAnimation = false;  
  16.   
  17.         //Set status for word application is to be visible or not.  
  18.         winword.Visible = false;  
  19.             
  20.         //Create a missing variable for missing value  
  21.         object missing = System.Reflection.Missing.Value;  
  22.   
  23.         //Create a new document  
  24.         Microsoft.Office.Interop.Word.Document document = winword.Documents.Add(ref missing, ref missing, ref missing, ref missing);  
  25.             
  26.         //Add header into the document  
  27.         foreach (Microsoft.Office.Interop.Word.Section section in document.Sections)  
  28.         {  
  29.             //Get the header range and add the header details.  
  30.             Microsoft.Office.Interop.Word.Range headerRange = section.Headers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;  
  31.             headerRange.Fields.Add(headerRange, Microsoft.Office.Interop.Word.WdFieldType.wdFieldPage);  
  32.             headerRange.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;  
  33.             headerRange.Font.ColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdBlue;  
  34.             headerRange.Font.Size = 10;  
  35.             headerRange.Text = "Header text goes here";  
  36.         }  
  37.   
  38.         //Add the footers into the document  
  39.         foreach (Microsoft.Office.Interop.Word.Section wordSection in document.Sections)  
  40.         {  
  41.             //Get the footer range and add the footer details.  
  42.             Microsoft.Office.Interop.Word.Range footerRange = wordSection.Footers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;  
  43.             footerRange.Font.ColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdDarkRed;  
  44.             footerRange.Font.Size =10;  
  45.             footerRange.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;  
  46.             footerRange.Text = "Footer text goes here";  
  47.           }  
  48.   
  49.         //adding text to document  
  50.         document.Content.SetRange(0, 0);  
  51.         document.Content.Text = "This is test document "+ Environment.NewLine;  
  52.             
  53.         //Add paragraph with Heading 1 style  
  54.         Microsoft.Office.Interop.Word.Paragraph para1 = document.Content.Paragraphs.Add(ref missing);                  
  55.         object styleHeading1 = "Heading 1";  
  56.         para1.Range.set_Style(ref styleHeading1);                  
  57.         para1.Range.Text = "Para 1 text";  
  58.         para1.Range.InsertParagraphAfter();  
  59.   
  60.         //Add paragraph with Heading 2 style  
  61.         Microsoft.Office.Interop.Word.Paragraph para2 = document.Content.Paragraphs.Add(ref missing);  
  62.         object styleHeading2 = "Heading 2";  
  63.         para2.Range.set_Style(ref styleHeading2);  
  64.         para2.Range.Text = "Para 2 text";  
  65.         para2.Range.InsertParagraphAfter();  
  66.   
  67.         //Create a 5X5 table and insert some dummy record  
  68.         Table firstTable = document.Tables.Add(para1.Range, 5, 5, ref missing, ref missing);  
  69.             
  70.         firstTable.Borders.Enable = 1;  
  71.         foreach (Row row in firstTable.Rows)  
  72.         {  
  73.             foreach (Cell cell in row.Cells)  
  74.             {  
  75.                 //Header row  
  76.                 if (cell.RowIndex == 1)  
  77.                 {  
  78.                     cell.Range.Text = "Column " + cell.ColumnIndex.ToString();  
  79.                     cell.Range.Font.Bold = 1;  
  80.                     //other format properties goes here  
  81.                     cell.Range.Font.Name = "verdana";  
  82.                     cell.Range.Font.Size = 10;  
  83.                     //cell.Range.Font.ColorIndex = WdColorIndex.wdGray25;                              
  84.                     cell.Shading.BackgroundPatternColor = WdColor.wdColorGray25;  
  85.                     //Center alignment for the Header cells  
  86.                     cell.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter;  
  87.                     cell.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;  
  88.                         
  89.                 }  
  90.                 //Data row  
  91.                 else  
  92.                 {  
  93.                     cell.Range.Text = (cell.RowIndex - 2 + cell.ColumnIndex).ToString();  
  94.                 }  
  95.             }  
  96.         }  
  97.             
  98.         //Save the document  
  99.         object filename = @"c:\temp1.docx";  
  100.         document.SaveAs2(ref filename);  
  101.         document.Close(ref missing, ref missing, ref missing);  
  102.         document = null;  
  103.         winword.Quit(ref missing, ref missing, ref missing);  
  104.         winword = null;  
  105.         MessageBox.Show("Document created successfully !");  
  106.     }  
  107.     catch (Exception ex)  
  108.     {  
  109.         MessageBox.Show(ex.Message);  
  110.     }  
Step 5: Once the code is executed successfully, the document output will be:

 
Clipboard03.jpg
 
The source code is attached, please post your feedback in the comments section.
 
Hope this helps someone.