我通常使用MS Excel來存儲和處理大量數據,但有時候經常會碰到一個問題—我需要的數據存儲在word表格中,而不是在Excel中,這樣處理起來非常麻煩,尤其是在數據比較龐大的時候,
這時我迫切地需要將word表格中的數據導入到Excel中。相信大家也碰到過同樣的問題,下面我就給大家分享一下在C#中如何使用免費控件來實現這一功能。這里,我使用了兩個免費API,
DocX和Spire.Xls。
有需要的朋友可以下載使用。下載地址:
DocX:codeplex官網
Spire.Xls: E-iceblue官網
注意:在創建項目后,需要添加這兩個控件的相關.dll文件作為項目的引用。
以下是詳細步驟:
首先我使用DocX API 來獲取word表格中的數據,然后將數據導入System.Data.DataTable對象中。
代碼片段:
步驟1:加載word文檔;
DocX document = DocX.Load("E:\\Program Files\\data.docx");
步驟2:從文檔中獲取表格。作為示例,這里我僅獲取了第一個表格;
//獲取文檔的第一個表格 Table table = document.Tables[0];
步驟3:創建一個DataTable對象,並導入word表格中的數據;
//創建一個Datable對象並命名為order DataTable dt = new DataTable("order"); //將word表格中的數據導入Datable DataColumn column; for (int i = 0; i < table.ColumnCount; i++) { column = new DataColumn(); column.ColumnName = table.Rows[0].Cells[i].Paragraphs[0].Text; dt.Columns.Add(column); } DataRow newRow; for (int i = 1; i < table.RowCount; i++) { newRow = dt.NewRow(); Row row = table.Rows[i]; for (int j = 0; j < table.ColumnCount; j++) { newRow[j] = row.Cells[j].Paragraphs[0].Text; } dt.Rows.Add(newRow); }
效果圖如下:
原word文檔:
Datable:
其次,我使用了Spire.Xls API來創建一個Workbook對象,並將dataTable插入到Workbook中,然后將文件保存為.xlsx文件。
代碼片段:
步驟1:創建一個Workbook實例並新建一個空的worksheet;
//創建一個Workbook示例 Workbook workbook = new Workbook(); //新建一個空的worksheet workbook.CreateEmptySheets(1); //獲取第一個worksheet Worksheet sheet = workbook.Worksheets[0];
步驟2:將dataTable中的數據導入到worksheet;
//將dataTable中的數據插入到worksheet中,1代表第一行和第一列 sheet.InsertDataTable(dt, true, 1, 1);
步驟3: 保存到一個excel文件中;
workbook.SaveToFile("Data.xlsx",ExcelVersion.Version2007);
生成的excel文件效果圖:
全部代碼:
using System.Data; using Spire.Xls; using Novacode; //Docx namespace word_table_to_excel { class Program { static void Main(string[] args) { DocX document = DocX.Load("E:\\Program Files\\data.docx"); Table table = document.Tables[0]; DataTable dt = new DataTable("order"); DataColumn column; for (int i = 0; i < table.ColumnCount; i++) { column = new DataColumn(); column.ColumnName = table.Rows[0].Cells[i].Paragraphs[0].Text; dt.Columns.Add(column); } DataRow newRow; for (int i = 1; i < table.RowCount; i++) { newRow = dt.NewRow(); Row row = table.Rows[i]; for (int j = 0; j < table.ColumnCount; j++) { newRow[j] = row.Cells[j].Paragraphs[0].Text; } dt.Rows.Add(newRow); } Workbook workbook = new Workbook(); workbook.CreateEmptySheets(1); Worksheet sheet = workbook.Worksheets[0]; sheet.InsertDataTable(dt, true, 1, 1); workbook.SaveToFile("Data.xlsx", ExcelVersion.Version2007); } } }
總結:
這是兩款獨立的免費軟件,使用時不需要安裝MS Office。使我節省了不少的時間。如果你有好的意見或建議,希望可以在這里相互分享。
希望本文能給您帶來一定的幫助。
