LinqToExcel常用对象

1.ExcelQueryFactory对象
(1)获取工作表名集合
IEnumerable<string> GetWorksheetNames()

//获取工作薄中的工作表名
foreach (string wsname in excel.GetWorksheetNames())
{
MessageBox.Show(wsname);
}

(2)获取工作表列名
IEnumerable<string> GetColumnNames(string worksheetName)
worksheetName可为工作表名或序号

//获取指定工作表的列名(若无列表,显示为Fn--n为一个数字,表示第几列)
foreach(string colname in excel.GetColumnNames("sheet1"))
{
MessageBox.Show(colname);
}

(3)获取工作表中的行(有标题行)
ExcelQueryable<Row> Worksheet(string worksheetName)
worksheetName可为工作表名或序号


(4)获取工作表中的行(无标题行)
ExcelQueryable<RowNoHeader> WorksheetNoHeader(string worksheetName)
worksheetName可为工作表名或序号

//循环处理无表头表格
foreach (RowNoHeader rnh in excel.WorksheetNoHeader())
{

foreach (var d in rnh)
{
MessageBox.Show(d.Value.ToString());
}
}

(5)获取工作表中的区域(有标题行)
ExcelQueryable<Row> WorksheetRange(string startRange, string endRange, int worksheetIndex)
stratRange和endRange用A1方式的字符串表示
worksheetIndex为工作表序号,有重载为worksheetName工作表名

(6)获取工作表中的区域(无标题行)
ExcelQueryable<RowNoHeader> WorksheetRangeNoHeader(string startRange, string endRange, int worksheetIndex)

(7)属性FileName,获取工作簿文件名
(8)属性DatabaseEngine,获取Excel引擎
(9)StrictMapping

2.行对象
Row : List<Cell>
RowNoHeader : List<Cell>

Row对象属性:
(1)IEnumerable<string> ColumnNames:列名
(2)Cell this[string columnName]:单元格索引器(列名作索引)
通过Row[i]或RowNoHeader[i]可以访问第i列
通过excel.Worksheet(1).ToArray()[i][j],可获取第i行第j列的数据。
i,j都从0开始,如果是Row对象,Exel表的第1行是标题,i为0时,实际是访问工作表的第2行。
在RowNoHeader对象中,i为0是访问的是表格的第1行。

3.单元格对象:Cell对象:
通过Value获取值(Value是一个Object对象)

//访问指定的列
foreach (RowNoHeader r in excel.WorksheetNoHeader(1))
{
MessageBox.Show(r[2].Value.ToString());
}

Cell cell = excel.Worksheet(1).ToArray()[2][2];
MessageBox.Show(cell.Value.ToString());

转载于:https://www.cnblogs.com/scwyh/p/3459739.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我们读取和写入Excel 经常使用NPOI工具,如果我们的需求只是需要读取Excel,可以考虑使用LinqToExcel这个组件。这个组件用起来简单、实用、操作方便,而且结合了Linq的查询特性,excel版本不仅支持2003,而且连wps表格都支持(后缀名为.et),csv文件更不在话下了。项目地址:https://github.com/paulyoder/LinqToExcel在使用之前:1.添加引用,通过Nuget 来添加是最方便的了,这里要注意的32/64问题。LinqToExcel.dll Remotion.Data.Linq.dll2.添加命名空间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 功能来达到。 github:https://github.com/paulyoder/LinqToExcelnuget: https://www.nuget.org/packages/LinqToExcel/ 和 https://www.nuget.org/packages/LinqToExcel_x64/  标签:LinqToExcel
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值