export

157 阅读1分钟
import export_json_to_excel from './excel/export2Excel'
export function exportExcel(dic, name) {
  /*
  参数格式及描述
  dic:[
  {sheetName:"",col:[],data:[]},
    {sheetName:"",col:[],data:[]},
    {sheetName:"",col:[],data:[]},
    ...
    ],分别为每页的表名,iview表格列的配置描述,请求到的数据
   name:字符串,导出的Excel文件名
  }
  */
  require.ensure([], () => {
    const tableData = []
    dic.forEach((item, index) => { // 整理数据
      tableData[index] = {}
      tableData[index]['sheetName'] = item.sheetName
      tableData[index]['titles'] = []
      tableData[index]['keys'] = []
      for (var i = 0; i < item.col.length; i++) {
        if (item.col[i].key) {
          tableData[index]['titles'].push(item.col[i].title)
          tableData[index]['keys'].push(item.col[i].key)
          // 如果有插槽,插槽名要和对应的key一样,如不一样需修改代码
        } else {
          if (item.col[i].children) { // 判断是否有表头合并
            item.col[i].children.forEach(j => {
              tableData[index]['titles'].push(
                item.col[i].title + '-' + j.title
              )
              tableData[index]['keys'].push(j.key)
            })
          } else {
            tableData[index]['titles'].push(item.col[i].title)
            tableData[index]['keys'].push(item.col[i].key)
          }
        }
      }
    })
    console.log(tableData)
    tableData.forEach((item, index) => {
      tableData[index]['data'] = formatJson(
        item.keys,
        dic[index].data
      )
      delete item.keys
    })
    export_json_to_excel(tableData, name)
  })
}

function formatJson(filterVal, jsonData) {
  return jsonData.map(v => filterVal.map(j => v[j]))
}