博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
轻量级Excel读取器ExcelReader
阅读量:4035 次
发布时间:2019-05-24

本文共 1218 字,大约阅读时间需要 4 分钟。

用户上传Excel文件,要求读取里面数据,其实可以很简单!新版Excel2007以上的xlsx文件,本质上是OpenXml格式,只需要解开压缩包然后读取内部Xml即可得到想要的数据。ExcelReader 用于快速读取单Sheet的Excel数据,早期是收费出售源码的项目,最近一年转为开源。

Nuget包:NewLife.Core

源码地址:https://github.com/NewLifeX/X/blob/master/NewLife.Core/IO/ExcelReader.cs

如果是csv格式文件,可以选择CsvFile:

此处为语雀文档,点击链接查看:https://www.yuque.com/smartstone/nx/csv_file

读取XLSX文件

ExcelReader 的设计非常简单,通过文件名或者数据流实例化对象后,直接ReadRows返回枚举数。

var reader = new ExcelReader("data/test.xlsx");var rows = reader.ReadRows().ToList();Assert.Equal(927, rows.Count);var names = "序号,名字,昵称,启用,年龄,生日,时间,余额,比率".Split(",");var fields = rows[0].Cast
().ToArray();Assert.Equal(names.Length, fields.Length);for (var i = 0; i < names.Length; i++){ Assert.Equal(names[i], fields[i]);}var values = "111,Stone,大石头,1,36.6,1984-07-01,2020-03-04 20:08:45,323.452,0.234".Split(",");var row1 = rows[1];Assert.Equal(values.Length, row1.Length);for (var i = 0; i < values.Length; i++){ Assert.Equal(values[i], row1[i]);}

ReadRows原型如下:

/// 逐行读取数据,第一行很可能是表头/// 工作表名。一般是sheet1/sheet2/sheet3,默认空,使用第一个数据表/// 
public IEnumerable
ReadRows(String sheet = null);

ExcelReader读取是并不会一次性加载整个文件进入内存,而是通过ReadRows返回一个枚举数,在枚举的过程中逐行读取。因此ExcelReader的内存消耗特别低,读取速度还特别快,并且支持读取超大文件。

转载地址:http://dxudi.baihongyu.com/

你可能感兴趣的文章
No.182 - LeetCode1325 - C指针的魅力
查看>>
mac:移动python包路径
查看>>
mysql:sql create database新建utf8mb4 数据库
查看>>
mysql:sql alter database修改数据库字符集
查看>>
mysql:sql drop table (删除表)
查看>>
mysql:sql truncate (清除表数据)
查看>>
scrapy:xpath string(.)非常注意问题
查看>>
yuv to rgb 转换失败呀。天呀。谁来帮帮我呀。
查看>>
yuv420 format
查看>>
YUV420只绘制Y通道
查看>>
yuv420 还原为RGB图像
查看>>
LED恒流驱动芯片
查看>>
驱动TFT要SDRAM做为显示缓存
查看>>
使用file查看可执行文件的平台性,x86 or arm ?
查看>>
qt5 everywhere 编译summary
查看>>
qt5 everywhere编译完成后,找不到qmake
查看>>
arm-linux开机读取硬件时钟,设置系统时钟。
查看>>
交叉编译在x86上调试好的qt程序
查看>>
/dev/input/event0 键盘输入
查看>>
qt 创建异形窗体
查看>>