js-xlsx

npm install xlsx --save

文档地址

读取

这里记录一下最经常用的方法,到时候复杂处理再记录

以nodejs 的方式

// nodejs 方式读取文件
const filePath = './test.xlsx';
const ws = xlsx.readFile(filePath, { type: 'binary'}); // 传文件路径读取文件
const sheet = ws.Sheets["Sheet1"]; // 指定工作表
const data = xlsx.utils.sheet_to_json(sheet, {header:1}); // 对工作表的内容进行json 转化
const header = data.slice(0, 1); // 第一行就是我们的header
const body = data.slice(1); // 数据body

browser 方式,上传文件的形式读取excel

<input type="file"  @change="fileChange" />
function fileChange(e) {
    var files = e.target.files;
    console.log(files)
    var fileReader = new FileReader();
    fileReader.readAsBinaryString(files[0]);

    fileReader.onload = (ev) => {
        // 读取上传的文件,后面的跟上面类似
        const file = ev.target.result; 
        const wb = xlsx.read(file, { type: 'binary' }); 
        const sheet = wb.Sheets["Sheet1"];
        const data = xlsx.utils.sheet_to_json(sheet, {header:1});
    };

},

写 Excel

nodejs 方式直接导出excel

/**
 * @params dataSource 简单的数据结构
 * @params excelName  表名
 */ 

type source {
    name: string,
    address: string,
    phone: number
}

function json2Excel(dataSource: source, excelName: string) {
    let wb = xlsx.utils.book_new()
    let ws = xlsx.utils.aoa_to_sheet(dataSource); // 将简单的数据对象写到工作表里
    xlsx.utils.book_append_sheet(wb, ws, "SheetJS")
    xlsx.writeFile(wb, `${excelName}.xlsx`);
}

创建a 链接方式导出excel

参考

其他链接参考