VUE前端导出excel库exceljs

安装

npm install exceljs

下载


//导入ExcelJS
import ExcelJS from "exceljs";

//下载文件
download_file(buffer, fileName) {
    console.log("导出");
    let fileURL = window.URL.createObjectURL(new Blob([buffer]));
    let fileLink = document.createElement("a");
    fileLink.href = fileURL;
    fileLink.setAttribute("download", fileName);
    document.body.appendChild(fileLink);
    fileLink.click();
}

导出

设置行高列宽
合并单元格
自定义表格样式

//下面是导出的函数
async export() {
    const workbook = new ExcelJS.Workbook();
    const worksheet = workbook.addWorksheet("Sheet1");
    //这里是数据列表
    const data = [
        { id: 1, name: "艾伦", age: 20, sex: "男", achievement: 90 },
        { id: 2, name: "柏然", age: 25, sex: "男", achievement: 86 },
        { id: 3, name: "程丽", age: 30, sex: "女", achievement: 90 }
    ];
    // 设置列,这里的width就是列宽
    worksheet.columns = [
        { header: "序号", key: "id", width: 10},
        { header: "姓名", key: "name", width: 10 },
        { header: "年龄", key: "age", width: 10 },
    ];
    
    // 批量插入数据
    data.forEach(item => worksheet.addRow(item));
    
//设置行高,由于第一行被表头占据了,所以从2开始,也就是数据的第一行
    //想设置其他行设置参数就好了
    worksheet.getRow(2).height = 30;

    // 合并单元格,就是把B1开始到D1的单元格合并
    worksheet.mergeCells("B1:D1");
    
    //设置样式表格样式,font里面设置字体大小,颜色(这里是argb要注意),加粗
    //alignment 设置单元格的水平和垂直居中
    const B1 = worksheet.getCell( B1 )
    B1.font = { size: 20, color:{ argb:  FF8B008B  }, bold: true }
    B1.alignment = { horizontal:  center , vertical:  middle  }

    // 写入文件
    const buffer = await workbook.xlsx.writeBuffer();
    //下载文件
    this.download_file(buffer, "填报汇总.xlsx");
}

其他用法


// 批量设置所有表格数据的样式
worksheet.eachRow((row,rowNumber) => {
    //设置表头样式
    if (rowNumber <= 2) {
        row.eachCell(cell =>{
            cell.font = { size: 16, color:{ argb:  FF8B008B  }, bold: true }
            cell.alignment = { horizontal:  center , vertical:  middle  }
        })
    }
    //设置数据列表样式
    if (rowNumber > 2) {
        row.eachCell(cell => {
            cell.font = { size: 12, bold: true };
            cell.alignment = { horizontal:  center , vertical:  middle  }
        });
    }
    //设置所有行高
    row.height = 30;
});

//获取行数和列数
const rowCount = worksheet.rowCount;
const columnCount = worksheet.columnCount;
console.log(`行数:${rowCount},列数:${columnCount}`);

参考:ExcelJS导出excel表格,合并单元格,自定义样式 – 天宁哦 – 博客园 (cnblogs.com)

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...