C#使用MiniExcel读取excel表格文件

2024-03-15 15:12

本文主要是介绍C#使用MiniExcel读取excel表格文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用MiniExcel读取excel表格文件

MiniExecl提供了几种读取方法。

准备测试数据

测试类:

   public class Person{public int Id { get; set; }public string Name { get; set; }public string Description { get; set; }public double Value { get; set; }}

测试数据:

在这里插入图片描述

方法一:以行列号来读取

使用MiniExcel.Query方法读取一个IEnumerable<dynamic>动态类型dynamic的集合

 var rows = MiniExcel.Query("test1.xlsx").ToList();

在这里插入图片描述

然后使用rows[0].A使用行号获取第几行,然后使用列号A、B、C…来获取对应的单元格的值

打断点可以看到各列的值的类型,读出来的都是dynamic,但是实际是由对应的类型,带字符的基本都是string,数值类型都是double,需要自己先处理一下

在这里插入图片描述

A,B,C列都是动态类型,但是实际数据根据单元格里数据不同,类型不同,可以统一对数据进行转换

/// <summary>
/// 动态类型转字符串,自动判空
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public string DynamicToString(dynamic data)
{return data == null ? "" : (string)data.ToString();
}

完整代码:

  private void Init(){//方法1var rows = MiniExcel.Query("test1.xlsx").ToList();for (int i = 1; i < rows.Count; i++)//跳过首行{Person person = new Person{Id = int.Parse(DynamicToString(rows[i].A)),Name = DynamicToString(rows[i].B),Description = DynamicToString(rows[i].C),Value = double.Parse(DynamicToString(rows[i].D)),};list.Add(person);}}/// <summary>/// 动态类型转字符串,自动判空/// </summary>/// <param name="data"></param>/// <returns></returns>public string DynamicToString(dynamic data){return data == null ? "" : (string)data.ToString();}

效果:
在这里插入图片描述

方法二:使用第一行的名称进行读取

使用首行(标题行)的名称进行读取

在这里插入图片描述

读取的方法:

添加参数,设置使用头行读取,useHeaderRow: true

   var rows = MiniExcel.Query("test1.xlsx", useHeaderRow: true).ToList();

在这里插入图片描述

此时,读取的集合中已经没有首行,可以不用特殊处理

var rows = MiniExcel.Query("test1.xlsx", useHeaderRow: true).ToList();for (int i = 0; i < rows.Count; i++){Person person = new Person{Id = int.Parse(DynamicToString(rows[i].Id)),Name = DynamicToString(rows[i].Name),Description = DynamicToString(rows[i].Description),Value = double.Parse(DynamicToString(rows[i].Value)),};list.Add(person);}

实现效果一样

方法三:反序列化

首行标题跟类的属性名称一样,可以直接进行转换类型

在这里插入图片描述

直接返回对应类型的集合

 var rows = MiniExcel.Query<Person>("test1.xlsx").ToList();

这种方法最简单,但是对表格格式要求比较高,第一行必须为首行,否则无法实现

这篇关于C#使用MiniExcel读取excel表格文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/812391

相关文章

C#中checked关键字的使用小结

《C#中checked关键字的使用小结》本文主要介绍了C#中checked关键字的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录✅ 为什么需要checked? 问题:整数溢出是“静默China编程”的(默认)checked的三种用

C#中预处理器指令的使用小结

《C#中预处理器指令的使用小结》本文主要介绍了C#中预处理器指令的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 第 1 名:#if/#else/#elif/#endif✅用途:条件编译(绝对最常用!) 典型场景: 示例

Springboot配置文件相关语法及读取方式详解

《Springboot配置文件相关语法及读取方式详解》本文主要介绍了SpringBoot中的两种配置文件形式,即.properties文件和.yml/.yaml文件,详细讲解了这两种文件的语法和读取方... 目录配置文件的形式语法1、key-value形式2、数组形式读取方式1、通过@value注解2、通过

C#实现将XML数据自动化地写入Excel文件

《C#实现将XML数据自动化地写入Excel文件》在现代企业级应用中,数据处理与报表生成是核心环节,本文将深入探讨如何利用C#和一款优秀的库,将XML数据自动化地写入Excel文件,有需要的小伙伴可以... 目录理解XML数据结构与Excel的对应关系引入高效工具:使用Spire.XLS for .NETC

C#如何在Excel文档中获取分页信息

《C#如何在Excel文档中获取分页信息》在日常工作中,我们经常需要处理大量的Excel数据,本文将深入探讨如何利用Spire.XLSfor.NET,高效准确地获取Excel文档中的分页信息,包括水平... 目录理解Excel中的分页机制借助 Spire.XLS for .NET 获取分页信息为什么选择 S

Java利用Spire.XLS for Java自动化设置Excel的文档属性

《Java利用Spire.XLSforJava自动化设置Excel的文档属性》一个专业的Excel文件,其文档属性往往能大大提升文件的可管理性和可检索性,下面我们就来看看Java如何使用Spire... 目录Spire.XLS for Java 库介绍与安装Java 设置内置的 Excel 文档属性Java

Mysql中RelayLog中继日志的使用

《Mysql中RelayLog中继日志的使用》MySQLRelayLog中继日志是主从复制架构中的核心组件,负责将从主库获取的Binlog事件暂存并应用到从库,本文就来详细的介绍一下RelayLog中... 目录一、什么是 Relay Log(中继日志)二、Relay Log 的工作流程三、Relay Lo

使用Redis实现会话管理的示例代码

《使用Redis实现会话管理的示例代码》文章介绍了如何使用Redis实现会话管理,包括会话的创建、读取、更新和删除操作,通过设置会话超时时间并重置,可以确保会话在用户持续活动期间不会过期,此外,展示了... 目录1. 会话管理的基本概念2. 使用Redis实现会话管理2.1 引入依赖2.2 会话管理基本操作

Springboot请求和响应相关注解及使用场景分析

《Springboot请求和响应相关注解及使用场景分析》本文介绍了SpringBoot中用于处理HTTP请求和构建HTTP响应的常用注解,包括@RequestMapping、@RequestParam... 目录1. 请求处理注解@RequestMapping@GetMapping, @PostMappin

springboot3.x使用@NacosValue无法获取配置信息的解决过程

《springboot3.x使用@NacosValue无法获取配置信息的解决过程》在SpringBoot3.x中升级Nacos依赖后,使用@NacosValue无法动态获取配置,通过引入SpringC... 目录一、python问题描述二、解决方案总结一、问题描述springboot从2android.x