【nodejs】【excel】下载多sheet excel文件

nodejs下载多sheet excel文件:

1.引入node-xlsx:

	npm intall node-xlsx

2.工具类封装:excelUtils

const xlsx = require('node-xlsx');
const fs = require('fs');
//方法封装
let sendExcel = function (array) {
    let bufferArray = [];
    array.forEach((v, i) => {
        if (v && v.fieldObj && v.fieldData && v.fieldData.length > 0) {
            const resultData = [];
            const title = [];
            let obj = v.fieldObj;
            for (let tit in obj) {
                let alias = obj[tit].alias;
                title.push(alias);
            }
            resultData.push(title);
            v.fieldData.forEach(function (doc1) {
                let value = [];
                for (let key1 in obj) {
                    if (doc1[key1]) {
                        value.push(doc1[key1]);
                    } else {
                        value.push('');
                    }
                }
                ;
                resultData.push(value);
            });
            bufferArray.push({name: v.sheetName, data: resultData})
        }
    });
    if (bufferArray.length > 0) {
        const buffer = xlsx.build(bufferArray);
        return buffer;
    } else {
        return null;
    }
};
exports.sendExcel = sendExcel;

3.测试:test.js【引入excelUtils.js】

function test() {
    let array = [
        {
            //列对应关系,即标题,此处也可以使用field1:value形式,相应的工具类中也要修改
            fieldObj: {
                field1: {
                    alias: "字段1"
                },
                field2: {
                    alias: "字段2"
                },
                field3: {
                    alias: "字段3"
                }
            },
            //fieldData:sql查询出来数据
            fieldData: [
                {
                    field1: "内容1-1",
                    field2: "内容1-2",
                    field3: "内容1-3"
                },
                {
                    field1: "内容2-1",
                    field2: "内容2-2",
                    field3: "内容2-3"
                },
            ],
            //当前的sheet名称
            sheetName: "统计sheet"
        },
        {
            fieldObj: {
                field1: {
                    alias: "字段1"
                },
                field2: {
                    alias: "字段2"
                },
                field3: {
                    alias: "字段3"
                }
            },
            fieldData: [
                {
                    field1: "内容1-1",
                    field2: "内容1-2",
                    field3: "内容1-3"
                },
                {
                    field1: "内容2-1",
                    field2: "内容2-2",
                    field3: "内容2-3"
                },
            ],
            sheetName: "数据sheet"
        }
    ];
    let sendExcel1 = sendExcel(array);
    /**当前路径下生成excel文件*****************************************************/
    const writer = fs.createWriteStream('./outinput.xlsx');
    writer.write(sendExcel1);
    /**通过浏览器写出文件**********************************************************/
    /*let res;//respose指的是响应对象
    let tableName = "test.xlsx";//导出文件名称:此处最好使用固定名称,真正的文件名应当由前端去命名,避免中文乱码问题
    if(sendExcel1){
        res.setHeader('Content-Type', 'application/vnd.openxmlformats;charset=utf-8');
        res.setHeader("Content-Disposition", "attachment; filename=" +encodeURIComponent(tableName));
        res.end(result);
    }*/
    /**通过浏览器写出文件**********************************************************/


}

在这里插入图片描述

在Node.js中,可以使用第三方库来读取Excel文件。其中比较常用的库是`xlsx`和`exceljs`。 1. 使用`xlsx`库: - 首先,需要安装`xlsx`库。可以使用npm命令进行安装:`npm install xlsx` - 然后,在代码中引入`xlsx`库:`const xlsx = require('xlsx');` - 使用`xlsx`库的`readFile`方法读取Excel文件:`const workbook = xlsx.readFile('path/to/excel/file.xlsx');` - 获取Excel文件中的第一个工作表:`const worksheet = workbook.Sheets[workbook.SheetNames];` - 使用`xlsx.utils.sheet_to_json`方法将工作表转换为JSON格式:`const jsonData = xlsx.utils.sheet_to_json(worksheet);` - 最后,可以对`jsonData`进行处理和操作。 2. 使用`exceljs`库: - 首先,需要安装`exceljs`库。可以使用npm命令进行安装:`npm install exceljs` - 然后,在代码中引入`exceljs`库:`const ExcelJS = require('exceljs');` - 创建一个新的工作簿对象:`const workbook = new ExcelJS.Workbook();` - 使用`workbook.xlsx.readFile('path/to/excel/file.xlsx')`方法读取Excel文件。 - 获取Excel文件中的第一个工作表:`const worksheet = workbook.getWorksheet(1);` - 遍历工作表中的每一行数据:`worksheet.eachRow({ includeEmpty: true }, (row, rowNumber) => { ... });` - 在每一行中,可以通过`row.getCell(columnNumber).value`获取单元格的值。 以上是两种常用的方法来读取Excel文件。根据具体需求和Excel文件的格式,选择适合的库和方法进行操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皇夜_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值