C# 将sheet中数据转为list
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的更多相关文章
- Java读取excel指定sheet中的各行数据,存入二维数组,包括首行,并打印
1. 读取 //读取excel指定sheet中的各行数据,存入二维数组,包括首行 public static String[][] getSheetData(XSSFSheet sheet) thro ...
- python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件
python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...
- python2/3中 将base64数据写成图片,并将图片数据转为16进制数据的方法、bytes/string的区别
1.python2将base64数据写成图片,并将数据转为16进制字符串的方法 import binascii img = u'R0lGODlhagAeAIcAAAAAAAAARAAAiAAAzABE ...
- 在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名)
原文:在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
- JavaScript中数据类型转换总结
JavaScript中数据类型转换总结 在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = " ...
- 【matlab】将matlab中数据输出保存为txt或dat格式
将matlab中数据输出保存为txt或dat格式 总结网上各大论坛,主要有三种方法. 第一种方法:save(最简单基本的) 具体的命令是:用save *.txt -ascii x x为变量 *.txt ...
- sheet目标数据插入函数主键模块
#coding:gbk #导入处理excel的模块 import xlrd #定义哪些字段需要判断,只支持时间字段 toSureColArray = ['CREATE_TIME','MODIFY_TI ...
- 将Excel中数据导入数据库(一)
在工作中经常要将Excel中数据导入数据库,这里介绍一种方法. 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: Excel中数据导入数据库帮助类如下: using System; ...
- python——快速找出两个电子表中数据的差异
最近刚接触python,找点小任务来练练手,希望自己在实践中不断的锻炼自己解决问题的能力. 公司里会有这样的场景:有一张电子表格的内容由两三个部门或者更多的部门用到,这些员工会在维护这些表格中不定期的 ...
随机推荐
- .NET (五)委托第五讲:内置委托Predicate
// 摘要: // 表示定义一组条件并确定指定对象是否符合这些条件的方法. // // 参数: // obj: // 要按照由此委托表示的方法中定义的条件进行比较的对象. // // 类型参数: // ...
- ue4框架C++语法汇总文章
1.Run external .exe file TCHAR* url = TEXT("C:\\windows\\system32\\calc.exe"); FPlatformPr ...
- thinkphp修改及编写标签库,编辑器的使用
在view目录下创建Index_aaa.html <!DOCTYPE html> <html> <head> <meta charset="UTF- ...
- javascript算法
代码运行环境: nodejs + mochajs /* *选择排序 *每次查找数组最小数据 *将最小数据排到左侧 */ var assert = require('assert'); describe ...
- EF 底层基础方法
1 using System; 2 using System.Data; 3 using System.Collections.Generic; 4 using System.Data.Entity; ...
- python学习心得第五章
python学习心得第五章 1.冒泡排序: 冒泡是一种基础的算法,通过这算法可以将一堆值进行有效的排列,可以是从大到小,可以从小到大,条件是任意给出的. 冒泡的原理: 将需要比较的数(n个)有序的两个 ...
- SQL SELECT 语句
本章讲解 SELECT 和 SELECT * 语句. SQL SELECT 语句 SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). SQL SELECT 语法 SE ...
- mysql优化要点(一)
一 sql语句中使用函数需要注意,因为有可能结果每条语句都会调用,甚至表内每条记录都会调用. 二 注意转换,会消耗大量性能,甚至字符串的encoding不同,也会出现非常大的消耗 三 myisa ...
- tomcat开机启动
最近老板租了个阿里云的服务器,动不动就自动重启,搞得我还得有事没事盯着服务器,谁知道它什么时候会重启啊,为了让自己不要那么累,也为了不要造成不必要的麻烦,还是把tomcat改成开机启动的程序吧. 网上 ...
- 介绍开源的.net通信框架NetworkComms框架之四 消息边界
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...