1.前言:
讀取Excel檔案的方法很多,LinqToExcel是利用Linq的方式查詢讀取Excel 2003/2007的檔案,為一個MIT license的開放程式碼函式庫。
2.說明:
與眾多操作Excel檔案的函式庫相比,LinqToExcel只能算是輕量級的軟體,用以單純讀取Excel檔案。
有關LinqToExcel的說明可參考:
https://github.com/paulyoder/LinqToExcel#welcome-to-the-linqtoexcel-project
LinqToExcel軟體下載網址:
http://code.google.com/p/linqtoexcel/
本範例使用版本為LinqToExcel_1.7.1,建置平台選擇x86模式。
軟體解壓縮後,將\LinqToExcel_1.7.1的DLL檔複製到自己專案的bin目錄下
加入參考: LinqToExcel.dll, Remotion.Data.Linq.dll
加入命名空間:
using LinqToExcel; using Remotion;
Excel轉成DataTable:
private DataTable ExcelToDataTable(string filePath, string sheetName) { DataTable dt = new DataTable(); ExcelQueryFactory excel = new ExcelQueryFactory(filePath); IQueryable query = from row in excel.Worksheet(sheetName) select row; var columnName = excel.GetColumnNames(sheetName); //建立欄位名稱 foreach (var col in columnName) { dt.Columns.Add(col.ToString()); } //寫入資料到資料列 foreach (Row item in query) { dt.NewRow(); object[] cell = new object[columnName.Count()]; int idx = 0; foreach (var col in columnName) { cell[idx] = item[col].Value; idx++; } dt.Rows.Add(cell); } return dt; }
3.應用:
//範例一: 讀取Excel 2003檔案 string filePath = @"D:\tmp\b.xls"; string sheetName = "Sheet1"; DataTable dt = ExcelToDataTable(filePath, sheetName); //範例二: 讀取Excel 2007檔案 string filePath = @"D:\tmp\c.xlsx"; string sheetName = "Sheet1"; DataTable dt = ExcelToDataTable(filePath, sheetName);
文章標籤
全站熱搜