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

news/2024/7/19 16:19:03 标签: excel, node.js, js, photoshop

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: 基于js>node.jsexcel文件中提取数据,仅支持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('文件读取失败!');
    }

   

}

 


http://www.niftyadmin.cn/n/1597996.html

相关文章

Could not autowire. No beans of 'UserInfoMapper' type found. less... (Ctrl+F1)

Could not autowire. No beans of ‘UserInfoMapper’ type found. less… (CtrlF1) Checks autowiring problems in a bean class.报错 解决方案 在mapper接口添加Repository 报错消失

UML概要总结

点击看清晰图,请耐心等待。。。 看了倩兰总结的挺好的:http://hi.csdn.net/attachment/201110/21/0_13191824362r51.gif

phtoshop CEP扩展 读取xls文件内容

整个问题搞了一周,各种插件测试。 思路:1、cep直接读取xls文件,但cep扩展本身和浏览器类似,所以直接读取本地文件,会有一个浏览器的安全问题要绕过去,就直接用ps自带的读取xls文件,以获取到xls…

javaScript 用变量作为对象 key引用

var a {"日期":1,"订单":2}; var d"日期"; document.write( a[d] );//输出结果:1 a[d]等价于a.日期 document.write( a.[d] );//输出结果:错误

Linux下Chrome字体设置

试了好多种方法,通过浏览器Preference中设置,字体看着总是那么别扭,安装了插件Change Font虽然可以使用,可是强制将字体全部更改总感觉不太爽,况且效果不是很好。试了下面这种方法,效果不错 编辑~/.config/…

maven项目generator逆向工程(Mybatis +MYSQL)

maven项目generator逆向工程 项目结构 pom.xml添加generator依赖 <dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.6</version></dependency>config.pr…

javaScript 对象转字符串顺序改变

var obj {"数量":"a","6":8,"剪刀":"c"}; var obj_StrJSON.stringify(obj); //输出obj_Str结果&#xff0c;key为数字时提前 {"6":8,"数量":"a","剪刀":"c"} //用循…

UML9种图

清晰大图&#xff0c;请您耐心等待... 我只是用图总结的&#xff0c;总会有局限性&#xff0c;看了崔成龙写的博客挺详细的。所以补充网址&#xff1a;http://blog.csdn.net/xiaoxian8023/article/details/6840986 总结是总结&#xff0c;接下来要实战了&#xff0c;打算和图抗…