因为前一段时间公司做项目的时候,用到了Excel导入和导出,然后自己找了个插件Epplus进行操作,自己将当时的一些代码抽离出来写了一个帮助类,
Epplus下的一个将Excel转换成List的范型帮助类
。因为帮助类是在Epplus基础之上写的,项目需要引用Epplus.dll。自己基础不是很扎实,有问题的地方欢迎指导。
1.用法,默认excel第一列是头部信息。
public class UserInfo : XlsRow
{
public int id { get; set; }
public string username { get; set; }
public string address { get; set; }
public int userage { get; set; }
public DateTime birthday { get; set; }
public decimal total { get; set; }
public string grade { get; set; }
}
static void Main(string[] args)
{
string filePath = "E:\\ExcelConvertEntity\\datatest.xlsx";
//转换address列的时候在所有地址钱添加“上海市”三个字
ECEntityCOM
//excel列name对应实体username进行映射
ECEntityCOM
//列名age映射到实体userage属性,映射过程中给所有age加5
ECEntityCOM
//读取excel转换成List
List
Console.WriteLine("ok");
Console.ReadLine();
}
a.实体需要继承我的自定义实体XlsRow,这个实体会记录转换过程出错信息,转换这一行的时候,是否出现过错误,具体是那一列出错的。转换出错单元格内内容是什么,还有错误信息,
电脑资料
《Epplus下的一个将Excel转换成List的范型帮助类》(https://www.unjs.com)。public class XlsRow
{
///
/// 错误信息
///
public List
///
/// 错误列名
///
public List
///
/// 错误内容
///
public List
///
/// 是否转换出错(false:未出错,true:出错)
///
public bool IsErr { get; set; }
}
然后转换过程中提供了几个方法,用来更好的自定义转换形式。
b.转换过程中,某一列统一进行某些处理操作,最后把处理后的信息存进实体列名里。
//转换address列的时候在所有地址钱添加“上海市”三个字
ECEntityCOM
c.实体名跟excel列头部名称不一致,可以自定义映射。
//excel列name对应实体username进行映射
ECEntityCOM
d.自定义映射对excel单元格信息进行处理。
//列名age映射到实体userage属性,映射过程中给所有age加5
ECEntityCOM
帮助类:
#region 需要用到的实体
public class XlsEntity
{
///
/// 实体名称
///
public string EntityName { get; set; }
///
/// 列名称
///
public string ColumnName { get; set; }