In this article, we are going to describe an example that will read the data from table available in Word document by using C# and then this data will be stored in C# data table. Here is the snap shot of a sample word document located at path D:\TEST\Employee Details.docx. This contains a table of employee details.
To read the details of each employee from this table by C# code program, you need to follow the below given steps.
Step 1: Drag a dataGridView component and a button to the form and set the text property of button to Read Word.
Step 2: In the Solution Explorer window, right-click the project then click Add Reference. In .NET tab, select Microsoft.Office.Interop.Word component and then click OK.
Step 3: Now check that Microsoft.Office.Interop.Word has been added under the references.
Step 4: Add the Word reference to your Class by placing this code in the list of namespaces.
using Microsoft.Office.Interop.Word;
Step 5: Declare a DataTable object dtgrid at the class level.
DataTable dtgrid = new DataTable();
Step 6: Define the readTableFromWord() function as shown below.
public void readTableFromWord()
{
Microsoft.Office.Interop.Word.Application application = new Microsoft.Office.Interop.Word.Application();
Document document = application.Documents.Open(@"D:\TEST\Employee Details.docx");
foreach (Microsoft.Office.Interop.Word.Row row in document.Tables[1].Rows)
{
// if it first row, it will be the header row
if (row.IsFirst)
{
// this foreach loop will iterate through every cell of first row and will create column of DataTable(dtgrid)
foreach (Microsoft.Office.Interop.Word.Cell cell in row.Cells)
{
dtgrid.Columns.Add(cell.Range.Text.Replace("\r\a", "").Replace("\a", "").ToString());
}
}
else
{
// in this code block, every cell of word table rows will be iterated and their values will be inserted in
// respective cells of DataTable(dtgrid)
DataRow dr = dtgrid.NewRow();
List<string> rows = new List<string>();
foreach (Microsoft.Office.Interop.Word.Cell cell in row.Cells)
{
rows.Add(cell.Range.Text.Replace("\r\a", "").Replace("\a", "").ToString());
}
for (int i = 0; i < dtgrid.Columns.Count; i++)
{
dr[i] = rows[i];
}
dtgrid.Rows.Add(dr);
}
}
// data binding of dtgrid data to dataGridView1
dataGridView1.DataSource = dtgrid;
document.Close();
application.Quit();
}
Step 7: Call this function in Click event of button1.
readTableFromWord();
Step 8: Build the application and run.
Step 9: Click on the Read Word button.
Step 10: You will see the output as below.