sheetjs 用于读取和导出文件,如Excel、csv

安装

1、CDN src="https://unpkg.com/xlsx/dist/xlsx.full.min.js"

2、$ npm i xlsx --save

3、$ npm install file-saver --save       // 依赖插件,用于对文件的生成保存  https://github.com/eligrey/FileSaver.js

使用

let XLSX = require('xlsx');     // 引用插件
let FileSaver = require('file-saver');

API

一、读写:

    XLSX.readFile('test.xlsx') - 读取文件

    XLSX.read(); 

    XLSX.write(wb, opt);  

    XLSX.writeFile(wb, filename, write_opts); 


二、方法

    XLSX.utils.table_to_book(document.getElementById('tableau'), {sheet:"Sheet JS"});    // 通过table遍历成导出文件

    XLSX.utils.json_to_book()      // 将组装sheet需要的格式,见下面数据格式

    XLSX.utils.sheet_to_json(ws, {header:1, raw:true})


三、输入

    aoa_to_sheet() - 将JS数据数组转换为工作表

    json_to_sheet() - 将一个JSON对象数组转换为工作表

    table_to_sheet() - 将DOM TABLE元素转换为工作表


四、出口: 将Sheet生成的数据转成其它格式:

    XLSX.utils.sheet_to_csv() - 生成CSV

    XLSX.utils.sheet_to_txt() - 生成UTF16格式文本

    XLSX.utils.sheet_to_html() - 生成HTML

    XLSX.utils.sheet_to_json() - 生成一个对象数组

    XLSX.utils.sheet_to_formulae() - 生成公式列表

    Example 将Sheet生成的数据转成html:

        let wb = XLSX.utils.table_to_book(document.getElementById('tab1'), {sheet:"Sheet JS"});
        let sheetData = wb.Sheets['Sheet JS'];
        console.log(XLSX.utils.sheet_to_html(sheetData));


五、通过Blob对象转成文件

    let wb = XLSX.utils.table_to_book(document.getElementById('tab1'), {sheet:"Sheet JS"});
    let fname = '借款.xlsx';
    FileSaver.saveAs(new Blob([s2ab(wb)], {type:"application/octet-stream"}), fname);

    function s2ab(s) {
        if(typeof ArrayBuffer !== 'undefined') {
            let buf = new ArrayBuffer(s.length);
            let view = new Uint8Array(buf);
            for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
            return buf;
        } else {
            let buf = new Array(s.length);
            for (var i=0; i!=s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;
            return buf;
        }
    }

格式

let wb = XLSX.utils.table_to_book(document.getElementById('tableau'), {sheet:"Sheet JS"});      // sheet定义的值是返回中数据SheetNames的值

{
    SheetNames:["SheetJSaaa"],      // 这里存的名与Sheets中的名对应
    Sheets:{
        "SheetJSaaa": {
            !merges: [],
            !ref: "A1:F7",              // 指定数据的开始和结束
            A1: {t: 's', v: '创建时间'},        // t:
            A2: {t: "n", v: 43205.613541666666, z: "m/d/yy"},
            B1: {t: "s", v: "业务类型"},
            B2: {t: "s", v: "PAY_DAY_LOAN"}
            .....
        }
    }
}

一、wb - workbook对象

    let wb = XLSX.utils.table_to_book(document.getElementById('tableau'), {sheet:"Sheet JS"});

    1、wb.SheetNames - 工作表的名

    2、wb.Sheets[sheetname] - 返回工作表中存储的数据

    3、wb.Props - 存储标准属性的对象

    4、wb.Workbook - 存储工作簿属性


二、修改单元格的值

    t - 单元格类型:b布尔值,n数字,e错误,s字符串,d日期
    https://docs.sheetjs.com/#cell-object     单元格对象


    let first_sheet_name = wb.SheetNames[0];
    let workSheet = wb.Sheets[first_sheet_name];

    let desired_cell = workSheet['A1'].v;       // 取出v的值


三、设置xlsx单元格行、列样式

    https://docs.sheetjs.com/#formulae

| https://www.gitbook.com/book/sheetjs/docs/details
| https://docs.sheetjs.com/#sheetjs-js-xlsx // 官方文档