我一般使用MS Excel來存儲和處理大量數據,但有時候常常會碰到一個問題—我須要的數據存儲在word表格中,而不是在Excel中,這樣處理起來很是麻煩,尤爲是在數據比較龐大的時候,html
這時我迫切地須要將word表格中的數據導入到Excel中。相信你們也碰到過一樣的問題,下面我就給你們分享一下在C#中如何使用免費控件來實現這一功能。這裏,我使用了兩個免費API,spa
DocX和Spire.Xls。3d
有須要的朋友能夠下載使用。下載地址:excel
DocX:codeplex官網code
Spire.Xls: E-iceblue官網htm
注意:在建立項目後,須要添加這兩個控件的相關.dll文件做爲項目的引用。對象
如下是詳細步驟:blog
首先我使用DocX API 來獲取word表格中的數據,而後將數據導入System.Data.DataTable對象中。文檔
代碼片斷:get
步驟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。使我節省了很多的時間。若是你有好的意見或建議,但願能夠在這裏相互分享。
但願本文能給您帶來必定的幫助。