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文本的主要内容,如果未能解决你的问题,请参考以下文章

js node.js读取excel文件返回为json文本

如何使用 HTML 输入文件导入 excel 文件并在 Node.js 中读取文件内容(如何将完整路径发送到 Node.js)

如何使用 node.js 将 EXCEL 文件数据读取到 json

使用nodejs处理Excel文件

node.js解析excel大文件的问题

node.js同步及异步读取写入删除文件1