前端下载/导出的excel表定制化?-灵析社区

回龙叫不醒

背景: 日常工作中,经常会有下载excel模板和导出excel数据的需求。 xlsx是由SheetJS开发的一个处理excel文件的npm库,但是同时会有下载、导出的excel表的样式比较粗糙的问题 比如下载模板 import * as XLSX from 'xlsx'; const handleDownloadTemplate = () => { let book = XLSX.utils.book_new(); // 实例化一个Sheet let sheet = XLSX.utils.json_to_sheet( [ { '姓名1111111199999': '', '年龄8888888': '', '身高': '' }, ], { header: [ '姓名', '年龄', '身高' ], }, ); // 将Sheet写入工作簿 XLSX.utils.book_append_sheet(book, sheet, 'Sheet1'); // 写入文件,直接触发浏览器的下载 XLSX.writeFile(book, 'xxxx模板.xlsx'); } 下载出来的表格比较粗糙 ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/602488991700576d20b3a821dc57e947.png) 主要有以下问题: 1. 单元格的宽度太小,文字展示不全; 2. 如果对下载的excel有定制化的一些样式需求,就不支持了。 所以,有没有什么好的方案:前端下载、导出的excel表可以定制化。 尝试: 目前没有找到更加好的方案。

阅读量:142

点赞量:0

问AI
"exceljs" (https://link.segmentfault.com/?enc=bnL8cxgULDDMvfFqdnAHgg%3D%3D.u%2BF%2BhHwRzC4Oid82ypMfiNy%2B2uZSAMN8INsJDfu8mQ90SK7GVY%2FFdWp5eVCq58Pd) 是支持自定义样式的,"#样式 - exceljs/README_zh.md at master · exceljs/exceljs" (https://link.segmentfault.com/?enc=sykwDd3HN5%2BxHHTGiKA0gQ%3D%3D.pz9hDZcgzf4h63OB0ir8volnxIrDUqtDYFpyLOxNAsudI91tE9g5A9TzkgMHGY95M1GVHYj9MrF9sUo6Se2iDJg8wDC2rLZ0j%2FqFvC2hO9c%3D) 我也是看到别人推荐才改用的 👉 "这一定是前端导出Excel界的天花板~" (https://segmentfault.com/a/1190000042028092) *** 甚至可以配置底下单元格的规则校验,以及配置成下拉选择的形式。 "值校验" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/2839548bd912c2603ae4e3011215a736.png) "下拉选择" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/cbb8f4104d80cb22671415f9572aaebe.png)
,
可以使用xlsx-populate库: 支持高级定制化,比如合并单元格、设置数字格式、字体样式等 xlsx-populate允许以编程方式创建和修改Excel文件,支持.xlsx格式。 使用XlsxPopulate.fromData()创建一个新的工作簿,或者从现有文件加载。 然后,使用sheet().addCell()方法添加单元格,并设置样式。