daily-share icon indicating copy to clipboard operation
daily-share copied to clipboard

读取本地的Excel文件,转成需要的json数据结构(2021-6-23)

Open yaogengzhu opened this issue 3 years ago • 1 comments

利用node-xlsx解决Excel的数据问题

user.xlsx


var xlsx = require("node-xlsx");
// 解析得到文档中的所有 sheet
var sheets = xlsx.parse("./user.xlsx");
function getJson() {
    // 遍历 sheet
    const list = []
    sheets.forEach(function (sheet) {
        // 读取每行内容
        for (var rowId in sheet["data"]) {
        var row = sheet["data"][rowId];
        list.push({
            name: row[0],
            phone: row[1],
            city: row[2]
        })
        }
    });
    list.shift();
    return list
}
console.log(getJson())

yaogengzhu avatar Jun 23 '21 09:06 yaogengzhu

前端处理

结合 xlsx 依赖


import { read, utils } from 'xlsx';
const beforeUpload = (file) => {
    const fileReader = new FileReader();
    fileReader.onload = (event) => {
        try {
            const { result } = event.target;
            const workbook = read(result, { type: 'binary' });
            let data = [];
            for (const sheet in workbook.Sheets) {
                // eslint-disable-next-line no-prototype-builtins
                if (workbook.Sheets.hasOwnProperty(sheet)) {
                    data = data.concat(utils.sheet_to_json(workbook.Sheets[sheet]));
                }
            }
            console.log(data);
        } catch (e) {
            console.log(e);
        }
    };
    // 以二进制方式打开文件
    fileReader.readAsBinaryString(file);

    return false;
};

yaogengzhu avatar Jun 02 '22 06:06 yaogengzhu