美酒没故事° 2024-02-04 15:43 采纳率: 37.8%
浏览 133

exceljs 导出表格怎么设置列宽自适应表头和表体两个条件自动撑开?

这列数据看起来好挤

img

想要两个自动

  1. 表头比数据宽就按表头
  2. 数据比表头宽就按数据

比如:

img

  • 写回答

2条回答 默认 最新

  • 美酒没故事° 2024-02-05 11:01
    关注

    完美,哈哈哈哈

    img

    export function exportExcel(headers = [], data = [], name = 'excel') {
      // 创建工作簿
      const workbook = new ExcelJS.Workbook()
      // 添加工作表
      const worksheet = workbook.addWorksheet('sheet1')
    
      // 设置表头
      worksheet.columns = headers
    
      const border = {
        top: {
          style: 'thin',
        },
        left: {
          style: 'thin',
        },
        bottom: {
          style: 'thin',
        },
        right: {
          style: 'thin',
        },
      }
    
      // 添加数据
      data.map((row, index) => {
        worksheet.addRow(row)
        worksheet.columns.map((column) => {
          // 表头的样式
          worksheet.getCell(`${column.letter}1`).border = border
          worksheet.getCell(`${column.letter}1`).font = {
            bold: true,
          }
          worksheet.getCell(`${column.letter}1`).fill = {
            type: 'pattern',
            pattern: 'solid',
            fgColor: { argb: 'FF8FBC8F' },
          }
    
          // 列宽自适应
          let width = []
          column.values.map((value) => {
            if (!value) {
              width.push(10)
            } else if (/.*[\u4e00-\u9fa5]+.*$/.test(value)) {
              width.push(parseFloat(value.toString().length * 2.15))
            } else {
              width.push(parseFloat(value.toString().length * 1.15))
            }
          })
          column.width = Math.max(...width)
    
          // 行数据的样式
          worksheet.getCell(`${column.letter}${index + 2}`).border = border
        })
      })
    
      // 导出表格
      // workbook.xlsx.writeFile('测试' + '.xlsx') // 报错
      workbook.xlsx.writeBuffer().then((buffer) => {
        const blob = new Blob([buffer], {
          type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
        })
        const link = document.createElement('a')
        link.href = URL.createObjectURL(blob)
        link.download = name + '.xlsx'
        link.click()
        URL.revokeObjectURL(link.href) // 下载完成释放掉blob对象
      })
    }
    
    评论

报告相同问题?

问题事件

  • 修改了问题 2月5日
  • 创建了问题 2月4日

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法