2014年7月16日 星期三
使用LinqToExcel讀取Excel 2003/2007檔案
參考引用來源:使用LinqToExcel讀取Excel 2003/2007檔案
--
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);
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言