node 读取超大Excel 文件,提取数据
之前是用 node-xlsx 来处理excel文件,主要是读取数据或者根据数据生成excel文件。不过,node-xlsx 似乎无法处理超大的excel(100MB以上),例如:
var xlsx = require('node-xlsx');
var sheets = xlsx.parse('./test.xlsx'); //获取所有sheets
感谢这位老哥,找到了xlsx-extract 这个库,完美解决用流的方式读取excel
var powXLSX = require('xlsx-extract').XLSX;
new powXLSX().extract('./test.xlsx', { sheet_all: true }) // 读取文件所有sheet,默认只读取第一张sheet,参数配置如下
.on('sheet', function (sheet) {
console.log('sheet', sheet); // sheet is array [sheetname, sheetid, sheetnr]
})
.on('row', function (row) {
console.log('row', row); // row is a array of values or []
})
.on('cell', function (cell) {
// console.log('cell', cell); //cell is a value or null
})
.on('error', function (err) {
console.error('error', err);
})
.on('end', function (err) {
console.log('eof');
});
options = {
// sheet selection (provide one of the following)
sheet_name?: string; // select by sheet name
sheet_nr?: string; // default "1" - select by number of the sheet starting on 1
sheet_id?: string; // select by sheet id, e.g. "1"
sheet_rid?: string; // select by internal sheet rid, e.g. "rId1'
sheet_all?: boolean; // default false - select all sheets
// sax parser selection
parser?: string; // default "sax" - 'sax'|'expat'
// row selection
ignore_header?: number; // default 0 - the number of header lines to ignore
include_empty_rows?: boolean; // default false - include empty rows in the middle/at start
// how to output sheet, rows and cells
format?: string; // default array - convert to 'array'||'json'||'tsv'||'obj'
// tsv output options
tsv_float_comma?: boolean; // default false - use "," als decimal point for floats
tsv_delimiter?: string; // default '\t' - use specified character to field delimiter
tsv_endofline?: string; // default depending on your operating system (node os.EOL) e.g. '\n'
// cell value formats
raw_values?: boolean; // default false - do not apply cell formats (get values as string as in xlsx)
round_floats?: boolean; // default true - round float values as the cell format defines (values will be reported as parsed floats otherwise)
date1904?: boolean; // default false - use date 1904 conversion
ignore_timezone?: boolean; // default false - ignore timezone in date parsing
convert_values?: { // apply cell number formats or not (values will be reported as strings otherwise)
ints?: boolean; // rounds to int if number format is for int
floats?: boolean; // rounds floats according to float number format
dates?: boolean; // converts xlsx date to js date
bools?: boolean; // converts xlsx bool to js boolean
};
// xlsx structure options
workfolder?: string; // default 'xl' - the workbook subfolder in zip structure
}
具体的实现原理可以去github 探究 xlsx-extract
node 读取超大Excel 文件,提取数据的更多相关文章
- POI读取/写入Excel文件
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io ...
- 根据NPOI 读取一个excel 文件的多个Sheet
大家都知道NPOI组件可以再你本地没有安装office的情况下来 读取,创建excel文件.但是大家一般都是只默认读取一个excel文件的第一个sheet.那么如果要读取一个excel 的所有shee ...
- Ajax获取 Json文件提取数据
摘自 Ajax获取 Json文件提取数据 1. json文件内容(item.json) [ { "name":"张国立", "sex":&q ...
- node.js之excel文件读取
金天:学习一个新东西,就要持有拥抱的心态,如果固守在自己先前的概念体系,就会有举步维艰的感觉.node.js解析excel, 读取记录. 业务需求,从excel (xlsx, xls)导入数据. 备选 ...
- java 读取Excel文件并数据持久化方法Demo
import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util ...
- 读取超大Excel(39万行数据)
有个学长需要处理Excel数据,Excel数据共有39W,将数据读取后处理并导出数据.最开始尝试了 NPOI ,发现NPOI 并不能完成该项任务,随后尝试引用的com组件:Microsoft.Offi ...
- java - 读取,导出 excel文件数据
首先需下载poi java包,添加至构建路径, 写处理方法: import java.io.FileInputStream;import java.io.FileOutputStream;import ...
- [译]使用Pandas读取大型Excel文件
上周我参加了dataisbeautiful subreddit上的Dataviz Battle,我们不得不从TSA声明数据集创建可视化.我喜欢这种比赛,因为大多数时候你最终都会学习很多有用的东西. 这 ...
- node 读取多个文件、合并多个文件、读写多个文件
一.读取文件 1.找文件中匹配的内容 let fs = require('fs') let content = fs.readFileSync('/Users/**/desktop/Test.txt' ...
随机推荐
- mongodb复杂条件查询 (or与and)
分类专栏: mongodb 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/tjbsl/ ...
- PERFORM参数传递
参数传递:将主程序变量传递给子例程形式参数传递类型值传:子例程中参数变量的值的改变,不影响外部程序实际变量的值. , B , C TYPE I. WRITE:'A=',A,'B=',B,'C=',C. ...
- sql server 查看连接详情
SELECT * FROM [Master].[dbo].[SYSPROCESSES] WHERE [DBID] IN ( SELECT [DBID] FROM [Master].[dbo].[SYS ...
- 软件设计师14-UML建模
UML图 用例图 用例图:参与者.用例 用例之间的关系:包含关系.扩展关系.泛化关系. 用例的包含关系:查询数据外借信息包含用户登录. 用例的扩展关系:修改之前要先查询,则修改信息包含查询信息用例 类 ...
- jquery源码问题
最近公司升级jquery版本后,原来项目中复选框的attr的使用失效,在查看了jquery的内容的时候发现版本更新,复选框的attr的使用替换成了prop,所以使用的时候出现了问题,但是涉及到的文件太 ...
- MySql常用操作【基础且详细(●'◡'●)】
有那么挺长段时间没有敲代码了,今敲起来竟然有些sql都想不起来了
- elasticsearch bulk
情景介绍 公司2000W的数据从mysql 迁移至elasticsearch,以提供微服务.本文基于elasticsearch-py bulk操作实现数据迁移.相比于elasticsearch-dum ...
- 英语AquilariaCrassna奇楠沉香
越南奇楠沉香Aquilaria crassna是瑞香科沉香属植物. 奇楠香被喻为沉香中的钻石,其与身俱来的香气,淡雅宜人,汇集天地阴阳五行之气,而成为唯一能通三界之香品.长久以来,它被视为一种珍贵罕有 ...
- 深入java8的集合:ArrayList的实现原理
一.概述 一上来,先来看看源码中的这一段注释,我们可以从中提取到一些关键信息: Resizable-array implementation of the List interface. Implem ...
- iOS处理含中文的请求链接
NSString *urlStr = @""; // 将中文URL进行转码 urlStr = [urlStr stringByAddingPercentEscapesUsingEn ...