runoops.com

使用exceljs实现excel转json

excel 文件地址:https://demo.runoops.com/file/test-product.xlsx

excel 文件内容:

目录结构:

安装exceljs

npm install exceljs --save
//或者 cnpm install exceljs

excel转json

test.js 文件:

实例

const ExcelJS = require('exceljs');

(async () => {

    const workbooks = new ExcelJS.Workbook();

    // 本地excel文件读取
    // let book = await workbooks.xlsx.readFile(filename);
    // await workbooks.xlsx.readFile(filename);


    // 远程读取
    let excelUrl = 'https://demo.runoops.com/file/test-product.xlsx';
    const excelBody = await fetch(excelUrl);
    // 按buffer读取
    await workbooks.xlsx.load(await excelBody.arrayBuffer());

    // 从流读取
    // await workbooks.xlsx.read(excelBody.body);

    //获取第一个worksheet
    const worksheet = workbooks.getWorksheet(1);

    //指定的列
    let mappingKeys = ['sku','title','description'];
    let result = [];
    let keys = [];
    // 按行读取
    worksheet.eachRow((row, rowNumber) => {
        let obj = {};
        // cell.type单元格类型:6-公式 ;2-数值;3-字符串
        row.eachCell((cell, colNumber) => {
            const value = cell.value;
            if (rowNumber === 1) {
                keys.push(value);
            } else {
                const key = keys[colNumber - 1];
                if (mappingKeys.includes(key)) {
                    obj[key] = value;
                    obj[keys[colNumber - 1]] = value;
                }
            }
        });
        if (rowNumber > 1) {
            result.push(obj)
        }
    });
    console.log(result);

})();

使用 cell.type 获取单元格类型:6-公式 ;2-数值;3-字符串。

如果是数值,文本,读取值可以用 cell.value;

如果为公式,读取值可以用cell.result;

如果不管类型,读取内容可以直接用cell.text。

运行查看效果:

$ node test.js
[
  {
    sku: 'testabc1',
    title: 'testa',
    description: 'this is a test product a'
  },
  {
    sku: 'testabcb',
    title: 'testb',
    description: 'this is a test product b'
  }
]

ExcelJS 基本用法

Captcha Code

0 笔记

分享笔记

Inline Feedbacks
View all notes