以前文章文章介绍了如何导出单列的excel
本篇文章介绍下多sheet的excel的导出
首先给大家看下成果

从上图可知,根底信息的数据格式和其余两个sheet不一样,所以要独自解决

依据现有的数据组装xlsx插件所需数据结构

  • 页面数据

这里以我罕用数据为例

    //根底数据个别是一个一般的对象    let valueObj = {        registerNo: '',  //洽购单号        statusName: '',  //状态        submitDate: '',  //提交工夫        //等等    }    //第一个表格数据    const tableHeader = tableHeader: [      {        title: "物料编码",        map: "materialCode",      },      {        title: "物料类型",        map: "materialTypeName",      },      {        title: "物料名称",        map: "materialName",      },      {        title: "规格型号",        map: "materialModel",      },    ]    const tableData = [      {        materialCode: 'a',        materialTypeName: 'b',        materialName: 'b',        materialModel: 'b',      },      {        materialCode: 'a',        materialTypeName: 'b',        materialName: 'b',        materialModel: 'b',      }    ]    //其余的表格数据同上      
  • 组装数据
    let data = {        title: "洽购单", //文件名称        baseSheetName: "根底信息",          baseSheetData: [          {            label: "洽购单号",            map: "registerNo",            value: "",          },          {            label: "以后状态",            map: "registerStatusName",            value: "",          },          //等等        ], //寄存根底数据        list: [          {            sheetName: '汇总', //第一个sheet数据             tableHeader: [              {                title: "物料编码",                map: "materialCode",              },              {                title: "物料类型",                map: "materialTypeName",              },                          ],            tableData: [              {                materialCode: 'a',                materialTypeName: 'b',                materialName: 'b',                materialModel: 'b',              },              {                materialCode: 'a',                materialTypeName: 'b',                materialName: 'b',                materialModel: 'b',              }            ]          },          {            sheetName: '明细',            tableHeader: [  //第二个sheet数据               {                title: "物料编码",                map: "materialCode",              },              {                title: "物料类型",                map: "materialTypeName",              },              {                title: "物料名称",                map: "materialName",              },              {                title: "规格型号",                map: "materialModel",              },              {                title: "物料阐明",                map: "materialIllustrate",              },            ],            tableData: [              {                materialCode: 'a',                materialTypeName: 'b',                materialName: 'b',                materialModel: 'b',              },              {                materialCode: 'a',                materialTypeName: 'b',                materialName: 'b',                materialModel: 'b',              }            ]          }        ], //其余sheet数据      }
  • 导出函数封装
import * as XLSX from "xlsx/xlsx.mjs"function exportExcel(data) {    var wb = XLSX.utils.book_new()    //解决根底数据    if (data.baseSheetName) {        let baseDataArr = []        data.baseSheetData.map(item => {          baseDataArr.push({            [data.title]: item.label,            '': item.value          })        })        let fdXslxws = XLSX.utils.json_to_sheet(baseDataArr)        XLSX.utils.book_append_sheet(wb, fdXslxws, data.baseSheetName)    }    //解决其余表格数据    data.list.map((item, index) => {        let arr = []        let newHeaderObj = {}        item.tableHeader.map(item => {          newHeaderObj[item.map] = item.title        })        item.tableData.map((el, idx) => {          let obj = {}          for (let x in newHeaderObj) {            obj[newHeaderObj[x]] = el[x]          }          arr.push(obj)        })        let fdXslxws = XLSX.utils.json_to_sheet(arr)        XLSX.utils.book_append_sheet(wb, fdXslxws, item.sheetName)    })    XLSX.writeFile(wb, data.title + ".xlsx")}

至此一个简略导出多列sheet的excel性能就实现了。。。