您可以使用workbook对象的SheetNamesSheets属性来遍历并修改每个工作表的列宽。以下是修改列宽为自适应的修改后代码:\n\njavascript\nimport { writeFile, utils } from 'xlsx'\n\nconst isExcelChange = () => {\n const wb = utils.table_to_book(document.querySelector('#tableData'))\n\n // 遍历每个工作表\n wb.SheetNames.forEach(sheetName => {\n const ws = wb.Sheets[sheetName]\n\n // 获取所有单元格的位置信息\n const range = utils.decode_range(ws['!ref'])\n\n // 遍历每一列\n for (let col = range.s.c; col <= range.e.c; col++) {\n // 计算每列的最大字符宽度\n let maxCharWidth = 0\n for (let row = range.s.r; row <= range.e.r; row++) {\n const cellAddress = utils.encode_cell({ r: row, c: col })\n const cell = ws[cellAddress]\n if (cell && cell.v) {\n const cellValue = String(cell.v)\n const cellWidth = cellValue.length\n if (cellWidth > maxCharWidth) {\n maxCharWidth = cellWidth\n }\n }\n }\n\n // 计算每列的像素宽度\n const pixelWidth = Math.floor((maxCharWidth + 2) * 1.3)\n\n // 设置列宽\n const colWidth = { wch: pixelWidth }\n ws[utils.encode_col(col)].wch = colWidth.wch\n }\n })\n\n if (state.queryForm.type == 2) {\n writeFile(\n wb,\n `各企业流量(日均值)统计${new Date().getTime()}.xlsx`\n )\n } else {\n writeFile(wb, `压差分布情况统计${new Date().getTime()}.xlsx`)\n }\n}\n\n\n在上述代码中,我们首先遍历了工作表的名称,然后使用decode_range方法获取每个工作表的范围。接下来,我们遍历每一列,并计算每列的最大字符宽度。然后,我们将字符宽度转换为像素宽度,并将其设置为每列的宽度。最后,我们将修改后的工作簿写入文件。

xlsx 库中如何设置列宽为自适应 - 代码示例

原文地址: https://www.cveoy.top/t/topic/pWDn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录