背景:
日常工作中,经常会有下载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');
}
下载出来的表格比较粗糙
主要有以下问题:
- 单元格的宽度太小,文字展示不全;
- 如果对下载的excel有定制化的一些样式需求,就不支持了。
所以,有没有什么好的方案:前端下载、导出的excel表可以定制化。
尝试:
目前没有找到更加好的方案。
exceljs 是支持自定义样式的,#样式 - exceljs/README_zh.md at master · exceljs/exceljs
我也是看到别人推荐才改用的 👉 这一定是前端导出Excel界的天花板~
甚至可以配置底下单元格的规则校验,以及配置成下拉选择的形式。