vue xlsx组件 导出的excel表头插入内容

发布时间 2023-06-01 17:50:11作者: HelloLLLLL
主要就是sheet_add_dom这个方法, dom是带有table标签元素的dom节点。
timeData是个二维数组:[["条件1","条件2"],["值1","值2"]];
如果是要在表格内容行里面插入内容,可以直接在与表格绑定的对象上,插入内容就可以了。
/*timeData 是二维数组*/
  getExcelWithInfo(timeData,dom, title = '默认标题', fn = () => {})
  {
    //得到一个worksheet对象
    //var data =[["按单据日期", "开始时间:", "2023-5-12", "结束时间:", "2023-5-31"]];
    const ws = XLSX.utils.aoa_to_sheet(timeData);

    //追加一个表格dom到 worksheet对象
    //origin 默认值是从表格的最开始即A1开始追加,会覆盖前一个表格
    //origin:-1 表示从上一个表格的末尾行追加
    //origin: {c:4, r:0} cellAddress 会从这个单元格的位置开始追加
    XLSX.utils.sheet_add_dom(ws, document.querySelector(dom), { origin: -1,raw: true })//原样格式

    let wb = XLSX.utils.book_new()

    var filename = title + ".xlsx"
    XLSX.utils.book_append_sheet(wb, ws, 'sheet1')
    let wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'array', bookSST: true, })
    fn && fn()
    try
    {
      FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), filename)
    }
    catch (e)
    {
      if (typeof console !== 'undefined') console.log(e, wbout)
    }
    return wbout
  },