我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C#使用NPOI将excel导入到list的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C#使用NPOI将excel导入到list的方法

本文实例为大家分享了C#使用NPOI将excel导入到list的具体代码,供大家参考,具体内容如下

这个是确定是实体类接收

/// <summary>
/// 将excel导入到list
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="fs">Stream 文件流</param>
/// <param name="list">转换的Dictionary:例如 ("昵称","nickname")</param>
/// <returns></returns>
public static List<T> ExcelToList<T>(this Stream fs, Dictionary<string, string> list) where T : class, new()
        {
            List<T> ts = new List<T>();
            IWorkbook workbook = null;
            ISheet sheet = null;
            T t = new T();
            List<string> listName = new List<string>();
            try
            {   // 获得此模型的公共属性
                var propertys = t.GetType().GetProperties().ToList();
                workbook = new HSSFWorkbook(fs);

                if (workbook != null)
                {
                    sheet = workbook.GetSheetAt(0);//读取第一个sheet,当然也可以循环读取每个sheet

                    if (sheet != null)
                    {
                        int rowCount = sheet.LastRowNum;//总行数
                        if (rowCount > 0)
                        {
                            IRow firstRow = sheet.GetRow(0);//第一行
                            int cellCount = firstRow.LastCellNum;//列数
                            //循环列数
                            for (int i = 0; i < cellCount; i++)
                            {
                                //循环需要转换的值
                                foreach (var item in list)
                                {
                                    if (item.Key.Equals(firstRow.GetCell(i).StringCellValue))
                                    {
                                        //替换表头
                                        firstRow.GetCell(i).SetCellValue(item.Value);
                                    }
                                }
                                //获取已经替换的表头
                                var s = firstRow.GetCell(i).StringCellValue;
                                //添加到listname
                                listName.Add(s);
                            }

                            for (int i = 1; i <= rowCount; i++)
                            {
                                t = new T();
                                IRow currRow = sheet.GetRow(i);//第i行

                                for (int k = 0; k < cellCount; k++)
                                {   //取值
                                    object value = null;
                                    if (currRow.GetCell(k) != null)
                                    {
                                        firstRow.GetCell(0).SetCellType(CellType.String);
                                        currRow.GetCell(k).SetCellType(CellType.String);
                                        value = currRow.GetCell(k).StringCellValue;
                                    }
                                    else
                                    {
                                        continue;
                                    }

                                    var Name = string.Empty;
                                    //获取第表头的值
                                    Name = listName[k];
                                    //循环属性
                                    foreach (var pi in propertys)
                                    {
                                        if (pi.Name.Equals(Name))
                                        {
                                            //获取属性类型名称
                                            var s = pi.PropertyType.Name;

                                            //如果非空,则赋给对象的属性
                                            if (value != DBNull.Value)
                                            {
                                                //判断属性的类型(可以自行添加)
                                                switch (s)
                                                {
                                                    case "Guid":
                                                        pi.SetValue(t, new Guid(value.ToString()), null);
                                                        break;

                                                    case "Int32":
                                                        pi.SetValue(t, value.ToString() == "" ? 0 : Convert.ToInt32(value.ToString()), null);
                                                        break;

                                                    case "Decimal":
                                                        pi.SetValue(t, value.ToString() == "" ? 0 : Convert.ToDecimal(value.ToString()), null);
                                                        break;

                                                    case "DateTime":
                                                        pi.SetValue(t, Convert.ToDateTime(value.ToString()), null);
                                                        break;

                                                    case "Double":
                                                        pi.SetValue(t, value.ToString() == "" ? 0 : Convert.ToDouble(value.ToString()), null);
                                                        break;

                                                    case "String":
                                                        pi.SetValue(t, value, null);
                                                        break;

                                                    default:
                                                        break;
                                                }
                                            }
                                        }
                                    }
                                }
                                //对象添加到泛型集合中
                                ts.Add(t);
                            }
                        }
                    }
                }
                return ts;
            }
            catch (Exception ex)
            {
                if (fs != null)
                {
                    fs.Close();
                }
                return null;
            }
        }

调用

 var list = new Dictionary<string, string>();
            list.Add("ID", "TradeAccountId");
            list.Add("简介", "Intro");
            list.Add("昵称1", "Nickname");
            list.Add("限制人数", "SubscribeLimit");
            list.Add("模式", "SubscribeMode");
            list.Add("收益率", "ProfitRate");
            list.Add("收益", "ProfitLossAmount");
            list.Add("头像", "Img");
            list.Add("平台名称", "Name");
            list.Add("用户昵称", "UserNickname");

            FileStream fs = new FileStream(@"C:\Users\Administrator\Desktop\Test\Test\bin\Debug\Export\2021-04-27-14-46-36.xls", FileMode.Open);
            var list3 = fs.ExcelToList<Res_Signal>(list);

实体类

[Serializable]
public class Res_Signal
    {
        /// <summary>
        /// 交易账号ID
        /// </summary>
        public Guid TradeAccountId { get; set; }

        /// <summary>
        /// 交易账号简介
        /// </summary>
        public String Intro { get; set; }

        /// <summary>
        /// 交易账号昵称
        /// </summary>
        public String Nickname { get; set; }

        /// <summary>
        /// 订阅限制值
        /// </summary>
        public Int32 SubscribeLimit { get; set; }

        /// <summary>
        /// 订阅模式 目前都是免费  0免费  1收费
        /// </summary>
        public Int32 SubscribeMode { get; set; }

        /// <summary>
        /// 订阅模式名称
        /// </summary>
        public String SubscribeMode_Des { get; set; }

        /// <summary>
        /// 平台名称
        /// </summary>
        public String Name { get; set; }

        /// <summary>
        /// 头像
        /// </summary>
        public String HeadImg { get; set; }

        /// <summary>
        /// 用户昵称
        /// </summary>
        public String UserNickname { get; set; }

        /// <summary>
        /// 订阅人数
        /// </summary>
        public Int32 SubscribeCount { get; set; }

        /// <summary>
        /// 平台图片
        /// </summary>
        public String Img { get; set; }

        /// <summary>
        /// 收益率
        /// </summary>
        public decimal ProfitRate { get; set; }

        /// <summary>
        /// 总收益
        /// </summary>
        public decimal ProfitLossAmount { get; set; }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C#使用NPOI将excel导入到list的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C#如何使用NPOI将excel导入到list

小编给大家分享一下C#如何使用NPOI将excel导入到list,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下这个是确定是实体类接收/// /// 将excel导入到list///
2023-06-29

C#中如何使用NPOI将List数据导出到Excel文档

今天小编给大家分享一下C#中如何使用NPOI将List数据导出到Excel文档的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
2023-06-29

C#中如何使用NPOI实现Excel导入导出功能

本文小编为大家详细介绍“C#中如何使用NPOI实现Excel导入导出功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#中如何使用NPOI实现Excel导入导出功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧
2023-06-29

C#如何使用NPOI对Excel数据进行导入导出

本篇内容介绍了“C#如何使用NPOI对Excel数据进行导入导出”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、概述NPOI 是 POI
2023-07-02

Java将Excel数据导入到数据库的方法

小编给大家分享一下Java将Excel数据导入到数据库的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!所用Jar包1. sqljdbc4.jar连接数据库的J
2023-05-30

Java中用POI实现将数据导出到Excel的方法

这篇文章将为大家详细讲解有关Java中用POI实现将数据导出到Excel的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一
2023-06-14

将日志导入到UCenter Home的方法

该功能需要您原来的空间提供 XML PRC 规范的 API 接口,详情可以咨询原来空间站点的管理员。下面请看具体的导入方法: 比如您需要导入自己站点的日志到官方 UCenter Home 中,请参考以下步骤: 1、登录您的 UCenter
2022-06-12

Java使用Apache.POI中HSSFWorkbook导出到Excel的实现方法

使用Apache.POI中HSSFWorkbook导出到Excel,具体内容如下所示: 1.引入Poi依赖(3.12) 依赖如下:org.apache.poi
2022-06-04

pentaho工具将数据库数据导入导出为Excel图文的方法

今天小编给大家分享一下pentaho工具将数据库数据导入导出为Excel图文的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录