public IList<T> ExportToList<T>(ISheet sheet, string[] fields) where T : class,new()
{
IList<T> list = new List<T>(); //遍历每一行数据
for (int i = sheet.FirstRowNum + , len = sheet.LastRowNum + ; i < len; i++)
{
T t = new T();
IRow row = sheet.GetRow(i); for (int j = , len2 = fields.Length; j < len2; j++)
{
Type propertyType = typeof(T).GetProperty(fields[j]).PropertyType; //获取当前属性的类型
ICell cell = row.GetCell(j);
object cellValue = null; if (cell == null)
{
continue;
} if(propertyType == typeof(string) | cell.CellType == CellType.Blank)
{
cell.SetCellType(CellType.String);
cellValue = cell.StringCellValue;
}
if (propertyType == typeof(int) && cell.CellType != CellType.Blank)
{
cell.SetCellType(CellType.Numeric);
cellValue = Convert.ToInt32(cell.NumericCellValue); //Double转int
}
if (propertyType == typeof(bool))
{
cell.SetCellType(CellType.Boolean);
cellValue = cell.BooleanCellValue;
} typeof(T).GetProperty(fields[j]).SetValue(t, cellValue, null);
}
list.Add(t);
}
return list;
}

调用如下:

static void Main(string[] args)
{ string _fromfile = @"D:\code\csharp\person.xlsx";
string _tofile = @"D:\test.xlsx"; IWorkbook book = null;
try
{
book = new XSSFWorkbook(_fromfile);
}
catch (IOException ex)
{
Console.WriteLine(ex.Message);
}
catch (Exception ex)
{
book = new HSSFWorkbook(File.OpenRead(_fromfile));
} ISheet sheet = book.GetSheet("person"); ExcelHelper helper = new ExcelHelper(_fromfile); string[] properties = new string[] { "name", "age", "sex", "id", "height", "weight", "country", "hometown", "phone" };
foreach (var p in helper.ExportToList<Person>(sheet, properties))
{
Console.WriteLine(" " + p.name.GetType() + " " + p.phone + " " + p.sex + " " + p.weight.GetType());
}
Console.Read();
}

说明:以上代码可以实现从Excel中读取数据,并将每个sheet里的对象集合放在一个list中。对于一个Excel,多次调用以上方法即可。

这些代码只是初步取出了数据,并没有进行数据为空等的校验,需要根据业务需要进行修改。

C# 将sheet中数据转为list的更多相关文章

  1. Java读取excel指定sheet中的各行数据,存入二维数组,包括首行,并打印

    1. 读取 //读取excel指定sheet中的各行数据,存入二维数组,包括首行 public static String[][] getSheetData(XSSFSheet sheet) thro ...

  2. python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件

    python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...

  3. python2/3中 将base64数据写成图片,并将图片数据转为16进制数据的方法、bytes/string的区别

    1.python2将base64数据写成图片,并将数据转为16进制字符串的方法 import binascii img = u'R0lGODlhagAeAIcAAAAAAAAARAAAiAAAzABE ...

  4. 在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名)

    原文:在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

  5. JavaScript中数据类型转换总结

    JavaScript中数据类型转换总结 在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = " ...

  6. 【matlab】将matlab中数据输出保存为txt或dat格式

    将matlab中数据输出保存为txt或dat格式 总结网上各大论坛,主要有三种方法. 第一种方法:save(最简单基本的) 具体的命令是:用save *.txt -ascii x x为变量 *.txt ...

  7. sheet目标数据插入函数主键模块

    #coding:gbk #导入处理excel的模块 import xlrd #定义哪些字段需要判断,只支持时间字段 toSureColArray = ['CREATE_TIME','MODIFY_TI ...

  8. 将Excel中数据导入数据库(一)

    在工作中经常要将Excel中数据导入数据库,这里介绍一种方法. 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: Excel中数据导入数据库帮助类如下: using System; ...

  9. python——快速找出两个电子表中数据的差异

    最近刚接触python,找点小任务来练练手,希望自己在实践中不断的锻炼自己解决问题的能力. 公司里会有这样的场景:有一张电子表格的内容由两三个部门或者更多的部门用到,这些员工会在维护这些表格中不定期的 ...

随机推荐

  1. modelsim(3) - tips(zt)

    1)如果需要跟踪信号,可以使用dataflow,直观,缺点是后仿太慢! http://www.cnblogs.com/asus119/archive/2011/04/01/2002525.html M ...

  2. HTTP权威协议笔记-7.缓存

    7.1 冗余的数据传输 缓存的作用:当客户端每次访问服务器,服务器都会返回一份相同文件,一些相同的字节会不断的在网络内传输,这样冗余的数据传输会耗尽昂贵的带宽,降低传输速度,加重Web服务器的负载. ...

  3. 监控平台项目之CSS总结——基于angularjs、bootstrap、jquery等框架

    1.新加一个类名,实现切换页面主题 在需要变色的标签处,添加该类名,即可实现最简化切换页面主题. HTML: <section ui-view=""> </sec ...

  4. 创建 Web 前端开发环境

    Web 前端开发涉及多种工具,这里将常用工具的安装和配置进行说明,提供了详细的说明,为后继的开发创建一个坚实的基础. 本文介绍的工具有:NodeJS, NPM, Bower, Git 和 Grunt. ...

  5. java hashCode方法返回值

    hashCode 是和内存地址相关的一个整数. HashCode只是在需要用到哈希算法的数据结构中才有用 用途是为了方便快速地查找对象: HashMap 是根据键对象的 HashCode 来进行快速查 ...

  6. 三张图片详解Asp.Net 全生命周期

    用三张图片详解Asp.Net 全生命周期 下面我们使用三张图片解析ASP.net的整个生命周期,我总感觉使用图片更加的清楚的说明这种问题,所以使用的这样方式 说明: 1  第一张图片从全局说明从客户端 ...

  7. html5 自定义验证信息

      h5 为表单新增了很多类型,及属性. 根据这些新增的类型及属性 h5也为我们提供了验证这些数据的js函数,这些验证表单的函数都存在了ValidityState对象中,接下来让我们一起来了解一下这些 ...

  8. centos配置epel

    1.下载epel wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 2.安装epel rpm -iv ...

  9. MVC 之 T4模板简介

    个人网站地址:nee32.com 一.T4模板内容简介 为了更好地学习T4模板,我们安装一个插件tangible T4 Editor 在使用了EF生成实体类后,我们会发现一个.tt后缀的文件,它就是T ...

  10. Oracle 更新表(另一张表)

    Update a set(a.province,a.city)= (select province,city from b where b.mobile=a.mobile)