我們讀取和寫入Excel 經常使用NPOI工具,如果我們的需求只是需要讀取Excel,可以考慮使用LinqToExcel這個組件。這個組件用起來簡單,實用,操作方便,而且結合了Linq的查詢特性,excel版本不僅支持2003,而且連wps表格都支持(后綴名為.et),csv文件更不在話下了。項目地址:https://code.google.com/p/linqtoexcel/
在使用之前:
1.添加引用,通過Nuget 來添加是最方便的了,這里要注意的32/64問題,具體參看文章 如何解決 LinqToExcel 發生「無法載入檔案或組件」問題
LinqToExcel.dll
Remotion.Data.Linq.dll
2.添加命名空間
using LinqToExcel;
//取得數據,只需要一行代碼
var
execelfile =
new
ExcelQueryFactory(sample.xls);
如何取到相應的表呢?
//緊接樓上
var tsheet = excelfile.Worksheet(0);
此時得到是沒有進行相應映射的(row)行列集合.
一個簡單的查詢:
var
excelfile =
new
ExcelQueryFactory(
"1.xls"
);
var
tsheet = excelfile.Worksheet(0);<br>
//查詢30歲以上的人的名字
var
query =
from
p
in
tsheet
where
p[
"Age"
].Cast<
int
>() > 30
select
p;
foreach
(
var
item
in
query)
{
Console.WriteLine(
"Name is {0}"
,item[0].Value.ToString());
}
Console.Read();
那如何轉成相應的實體集合呢? LinqToExcel還具有Mapping 功能,如果類的屬性名和Excel里的表頭名字如果是英文,(區分大小寫)必須與屬性名保持一致,支持中文屬性名和表頭。接著就是一個常遇到的需求,雖然說 Excel 的字段定義是英文,但是讀出來的時候必須要是更有意義的字詞(本范例翻譯成中文....),這時候就可以利用 LinqToExcel 的 AddMapping 功能來達到。
google code:https://code.google.com/p/linqtoexcel/
github:https://github.com/paulyoder/LinqToExcel
nuget: https://www.nuget.org/packages/LinqToExcel/ 和 https://www.nuget.org/packages/LinqToExcel_x64/
文章列表