js node.js读取excel文件返回为json文本
Posted 陈才人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js node.js读取excel文件返回为json文本相关的知识,希望对你有一定的参考价值。
node-xlsx: 基于Node.js解析excel文件数据及生成excel文件;只支持xlsx
xlsx: 基于Node.js解析excel文件数据及生成excel文件;只支持xlsx
excel-parser: 基于Node.js解析excel文件数据,支持xls及xlsx格式文件;需要安装python
excel-export : 基于Node.js将数据生成导出excel文件,只支持xlsx;
xls-to-json只支持xlsx
node-xlrd: 基于node.js从excel文件中提取数据,仅支持xls格式文件。xls文件另存为后才能读取
我想要一个能打开xls和xlsx的 ,测试xls文件时有部分失败,但xls文件另存为后,再测试,又可行
所以用了以下node或者ps中自带的CEP,加上xlsx.core.min.js方法
//读取excel文件 只实用于node 服务器端读取本地xls/xlsx的文件
/*此方法为 Adobe photoshop的 CEP 提供了自己的 API 来方便进行读写操作,实际上和使用 Node.js 的 fs 没有什么区别,不过
CEP 的接口的方法都是同步的,更容易理解。CEP 文件操作的方法放在 window.cep.fs 对象中。*/
/*1、选用readFile读取本地excel文件,但必须读取文件的编码设置为"Base64"(字符文件、二进制文件(txt/ini等)用"UTF-8"编码),读取出来后,获得的是一个Base64编码的字符串
2、因为xlsx.core.min.js可以用base64'或者binary编码类型。可选项,用编码转换方法window.cep.encoding.convertion.b64_to_binary(base64Str);将base64转换为binary二进制编码
3、用将获得的base64编码字符串用xlsx.core.min.js,读取为josnpath*/
function read_excelFile(){
//读取excel文件为base64编码
var path = "E:/work/测试/选片综合制作信息.xls"
let result = window.cep.fs.readFile(path, "Base64");//实际上和使用 Node.js 的方法没有什么区别
var start_time = Date.now();//运行开始时间
if (0 === result.err) {// err 为 0 读取成功
alert('文件读取成功!');
//可选项,将base64编码转换为binary二进制编码
// var data2=window.cep.encoding.convertion.b64_to_binary(result.data);
// 要用到 xlsx.core.min.js
//因为上面用cep或node,获取到了excel文件的数据,要将数据用xlsx.core.min.js转换为json
//返回excel文件的json数据
try {
workbook = XLSX.read(result.data, {
type: 'base64' //'base64'或者binary编码类型
}), // 以base64方式读取得到整份excel表格对象
persons = []; // 存储获取到的数据
} catch (e) {
alert('excel:'+path+'文件类型不正确');
return;
}
// 表格的表格范围,可用于判断表头是否数量是否正确
let fromTo = '';
// 遍历每张表读取
for (const sheet in workbook.Sheets) {
if (workbook.Sheets.hasOwnProperty(sheet)) {
fromTo = workbook.Sheets[sheet]['!ref'];
//console.log(fromTo);
persons = persons.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]));
//发现json格式不是你想要的你可以
//XLSX.utils.sheet_to_json(workbook.Sheets[sheet],{raw:true, header:1})
// 如果只取第一张表,就取消注释这行
// alert("4"+JSON.stringify(persons));
$("#workShowID").append(JSON.stringify(persons));
var end_time = Date.now();//运行开始时间
alert("运行时间:"+(end_time-start_time));
//break; // 如果只取第一张表,就取消注释这行
return
}
else {
alert('文件读取失败!');
}
}
以上是关于js node.js读取excel文件返回为json文本的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 HTML 输入文件导入 excel 文件并在 Node.js 中读取文件内容(如何将完整路径发送到 Node.js)