Epplus下的一个将Excel转换成List的范型帮助类 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

    因为前一段时间公司做项目的时候,用到了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.ForMember(e => e.address, e => "上海市:" + e);

    //excel列name对应实体username进行映射

    ECEntityCOM.ForMember("name", e => e.username);

    //列名age映射到实体userage属性,映射过程中给所有age加5

    ECEntityCOM.ForMember("age", e => e.userage, e => Convert.ToInt32(e) + 5);

    //读取excel转换成List

    List list = ECEntityCOM.LoadFromExcel(filePath);

    Console.WriteLine("ok");

    Console.ReadLine();

    }

    a.实体需要继承我的自定义实体XlsRow,这个实体会记录转换过程出错信息,转换这一行的时候,是否出现过错误,具体是那一列出错的。转换出错单元格内内容是什么,还有错误信息,

电脑资料

Epplus下的一个将Excel转换成List的范型帮助类》(https://www.unjs.com)。

    public class XlsRow

    {

    ///

    /// 错误信息

    ///

    public List ErrMessage { get; set; }

    ///

    /// 错误列名

    ///

    public List ErrColumn { get; set; }

    ///

    /// 错误内容

    ///

    public List ErrValue { get; set; }

    ///

    /// 是否转换出错(false:未出错,true:出错)

    ///

    public bool IsErr { get; set; }

    }

    然后转换过程中提供了几个方法,用来更好的自定义转换形式。

    b.转换过程中,某一列统一进行某些处理操作,最后把处理后的信息存进实体列名里。

    //转换address列的时候在所有地址钱添加“上海市”三个字

    ECEntityCOM.ForMember(e => e.address, e => "上海市:" + e);

    c.实体名跟excel列头部名称不一致,可以自定义映射。

    //excel列name对应实体username进行映射

    ECEntityCOM.ForMember("name", e => e.username);

    d.自定义映射对excel单元格信息进行处理。

    //列名age映射到实体userage属性,映射过程中给所有age加5

    ECEntityCOM.ForMember("age", e => e.userage, e => Convert.ToInt32(e) + 5);

    帮助类:

    #region 需要用到的实体

    public class XlsEntity

    {

    ///

    /// 实体名称

    ///

    public string EntityName { get; set; }

    ///

    /// 列名称

    ///

    public string ColumnName { get; set; }

最新文章