excel动态表单导出

导出的数据表格数量是动态的。可以是多个也可能是单个。于是想到了定义不同的sheet来放置不同的表格数据。

但是这里表格的数量不确定意味着声名的sheet变量也不确定

查了动态变量的定义
有通过eval实现

	for(var i=1;i<=8;i++){
    
    
		eval("var set_" + i + "=" + i);
	}

但是这种占内存
一般选用的数组定义

	let sheetArr = [];
	for (let i = 0; i < tlength; i++) {
    
    
		sheetArr[i] = 1;
	}

最后导出代码这里用了我上一篇的多表格合并导出插件
原理上差不多,所以使用市面上的excel导出插件应该都可以

// 导出
    getExcel() {
    
    
      // 创建工作簿
      let {
    
     tableList } = this;
      const workbook = new ExcelJS.Workbook();
      let creatName = `${
    
    this.chooseSchoolName}${
    
    this.sendData.startDate}至${
    
    this.sendData.endDate}的入籍明细表`;
      workbook.creator = "入籍明细";
      workbook.lastModifiedBy = "入籍明细";
      workbook.created = new Date();
      workbook.modified = new Date();
      let tlength = tableList.length;
      let sheetArr = [];
      for (let i = 0; i < tlength; i++) {
    
    
        sheetArr[i] = workbook.addWorksheet(tableList[i].departmentName);
        // 表头
        sheetArr[i].columns = [
          {
    
     header: "姓名", key: "name", width: 20 },
          {
    
     header: "证件号", key: "idCard", width: 20 },
        ];
        let table = tableList[i].data;
        let tablelength = table.length;
        for (let j = 0; j < tablelength; j++) {
    
    
          sheetArr[i].addRow(table[j]);
        }
      }
      workbook.xlsx.writeBuffer().then((buffer) => {
    
    
        // eslint-disable-next-line no-undef
        FileSaver.saveAs(
          new Blob([buffer], {
    
    
            type: "application/octet-stream",
          }),
          `${
    
    creatName}.xlsx`
        );
      });
    },

猜你喜欢

转载自blog.csdn.net/weixin_38566069/article/details/123420370