node读取文件(node读取文件流)
本文目录一览:
如何使用nodejs读写excel文件
nodejs作为功能强大的后端开发语言,有许多第三方包扩展nodejs能力。读写excel文件也有相关的第三方扩展。
node读取文件(node读取文件流)
node读取文件(node读取文件流)
本文介绍nodejs下如何通过使用node-xlsx扩展读写excel文件。
KNIME 读取Excel 文件
KNIME可以读取多种格式的文件,本文将介绍最常见的EXCEL格式的文件读取。
在KNIME中使用”Excel Reader”Node来读取excel文件。
一 “Excel Reader” Node 读取单个工作表
编辑界面如图所示,图中标示了几个关键的选项。
1.选择文件地址,可以是本地Excel文件,也可以是OneDrive中在线的Excel文件;
2.选择要读取的sheet的名字。一个Excel可能包含多个sheet,但一个Excel Reader Node只能读取一个sheet;
3.选择列名。可以自定义数字,任意选择第几行的数据作为列的名字。
4.选择读取的范围。默认读取整个表格,可以通过改变列的字母和行的数字,自定义读取表格范围。
运行,就可以看到结果了,如图所示。
一 “Excel Reader” Node +循环读取多个工作表
上文已介绍一个Excel Reader Node 只能读取一个sheet。但,如果一个文件中有几十个sheet,难道要编辑几十个Node吗?No,No...这显然违背了用KNIME提升工作效率的原则。下面就介绍如何使用“Excel Reader”和循环读取多个sheet。
我根据Iris数据集中的Class列内容,将数据集分成三个sheet,分别命名Iris-virginica,Iris-versicolor,Iris-setosa.
方法很简单,只需要4个Node就可以完美地解决问题。
“Read Excel sheet Name”,故名思意,就是读取所有sheet的名字。无需特殊编辑,只需选择文件地址就可以了。运行结果只有一列,就是sheet的名字。
下面就要开始循环了。想要Excel Reader根据sheet名字挨个读取。下面一步使用“Table Row To Variable Loop Start”,将上一步结果的行也就是这里的sheet名字,作为变量,并开始循环。此Node无需设置,保持默认就好。
接下来就是”Excel Reader”了,设置在上文中详细讲过,就不赘述了。
,“Loop End”结束循环(无需设置)。
执行工作流,成功。是不是超级简单。
nodejs获取文件夹下所有文件
function findSync(startPath) {
let result=[];
function finder(path) {
let files=fs.readdirSync(path);
files.forEach((val,index) = {
let fPath=join(path,val);
let stats=fs.statSync(fPath);
if(stats.isDirectory()) finder(fPath);
if(stats.isFile()) result.push(fPath);
});
}
finder(startPath);
return result;
}
let fileNames=findSync('./');
node读取本地文件中文乱码
node读取本地文件
由于Node环境当中不支持GBK编码,此时读到的文件,英文可读取,但中文乱码
node.js当中的Buffer对象支持的编码格式的种类(支持的格式:ascii、utf8、utf16le、ucs2、base64、binary、hex)有限,不支持GBK的编码形式。
解决办法
iconv-lite用于在node当中处理在各种作系统出现的各种奇特编码,该模块不提供读写文件的作,只提供文件编码转换的功能。
npm install iconv-lite
restitle即为txt文档中的中文
此时会出现一个
Iconv-lite warning: decode()-ing strings is deprecated. Refer to
上面这个github中给出了详细解释,大概意思是说
在使用iconv.decode功能进行解码之前,原始资源(无意间)已经body += ck通过jascript类型转换进行了解码。
双重解码不仅会导致错误的结果,而且几乎不可能恢复原始字节,因为utf8转换是有损的,因此即使这样做也 iconv.decode(new Buffer(body, 'utf8'), 'win1252') 无济于事。
不是很明白,但有个忽略的方法
使用前说明一下忽略,就不会报错
node.js解析excel大文件的问题
问题:使用 koa-bodyparser 可以解析t提交的问题,但是发现获取不到formdata上传的文件。
后经查资料,改用 koa-body 解决:
constkoaBody = require('koa-body'); app.use(koaBody({ multipart:true, formidable: { maxFileSize:20010241024//设置上传文件大小限制,默认2M} }))
然后就可以在 ctx.request.files 里面获取到上传的 文件信息了。ctx.request.files 为一个对象,里面包含一个 file 字段(为你前端上传定义的值),值为文件信息,主要是文件name和path,path为临时存储路径。
二、解析xlsx文件信息
主要使用模块 node-xlsx :npm i xlsx --se
1、加载模块
使用模块:fs--主要用于写入文件;node-xlsx主要用于转换xlsx数据和读取xlsx的文件数据;
constfs = require('fs')constxlsx = require('node-xlsx');//读写xlsx的插件
2、读取功能
读取功能相对简单,直接使用模块的 prase(路径) 方法就能读取
let list = xlsx.parse("./doc/hello.xlsx");
返回结果,name:表名,data:二维数组。(由于Excel以表格的形式表示,因此表格的数据都是通过二维数组进行接收。)
需要注意的是:data里的行数组为表头的信息
[ { name:'firstSheet', data: [ [Array], [Array] ] }, { name:'secondSheet', data: [ [Array], [Array] ] } ]
3、写入功能
写入功能,对应的写入数据与上面读取功能的返回格式需要一致,以数组的形式,name:表名,data:二维数组(Excel每行每列的数据)
如下面代码,生成一个Excel文件,分别两张表,表名分别是firstSheet,secondSheet
let xlsxObj =[ { name:'firstSheet', data: [ [1,2,3], [4,5,6] ], }, { name:'secondSheet', data: [ [7,8,9], [10,1,12] ], } ]
生成Excel文件:
fs.writeFileSync(路径,Buffer数据)
xlsx.build(xlsxObj) 会将数组转换为Buffer数据
执行下面代码就会生成对应的Excel文件
fs.writeFileSync('./doc/hello.xlsx', xlsx.build(xlsxObj),"binary")
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。