编辑
2026-04-01
undefined
00

目录

网上各种找
开干
其他库
关联资源下载
参考

网上各种找

首先,肯定是找一下有没有别人写好的库,自己写不现实的。最终找到了 js-xlsx,评价还不错,不过已经好久没有更新了,将就用用看咯。

js-xlsx 虽然支持修改导出文件的样式,不过是在它的专业版中,其分为社区版和专业版,社区版是开源的,但是却不支持修改导出文件的样式,专业版拥有更多的功能,这其中就包括修改样式。如果需要使用专业版,要邮件联系开发者,去咨询价格,购买它。

好在又找到了 xlsx-style 这个项目(同样的好久没有更新了,凑合着用),它可以对导出的 excel 文件进行一些样式上的修改。

开干

<script src="js/xlsx.extendscript.js"></script> <script src="js/xlsx-style/xlsx.full.min.js"></script> <script src="js/export.js"></script> <script> function btn_export() { var table1 = document.querySelector("#table1") var sheet = XLSX2.utils.table_to_sheet(table1) // 设置合并单元格垂直居中 sheet[&quot;!merges&quot;].forEach((item) =&gt; { var col = &quot;0&quot; var row = item.s.r + 1 switch (item.s.c) { case 0: col = &quot;A&quot; break case 1: col = &quot;B&quot; break case 2: col = &quot;C&quot; break case 3: col = &quot;D&quot; break } if (col == &quot;D&quot;) { sheet[col + row].t = &quot;n&quot; sheet[col + row].s = { alignment: { vertical: &quot;center&quot;, horizontal: &quot;center&quot;, wrapText: true, }, } } else { sheet[col + row].s = { alignment: { vertical: &quot;center&quot;, wrapText: true, }, } } }) //设置D列垂直居中 for (var i = 2; i &lt;= sheet[&quot;!merges&quot;][0].e.r + 1; i++) { sheet[&quot;D&quot; + i].t = &quot;n&quot; sheet[&quot;D&quot; + i].s = { alignment: { vertical: &quot;center&quot;, horizontal: &quot;center&quot;, wrapText: true, }, } } //设置单元格列宽 sheet[&quot;!cols&quot;] = [ {wch: 14,}, {wch: 20,}, {wch: 20,}, ] openDownloadDialog(sheet2blob(sheet), &quot;下载.xlsx&quot;) } </script>

一般情况下用xlsx.core.min.js就够了,xlsx.full.min.js则是包含了所有功能模块。

但是,xlsx.full.min.js和xlsx-style/xlsx.full.min.js(两个js都加密了)暴露出来的变量都叫XLSX,xlsx-style这个js文件里又没有XLSX.utils这个方法,还是后引入的,就会把前面的XLSX给覆盖了,所以会报错。

解决方法是删掉xlsx.full.min.js,改用xlsx.extendscript.js(这个js没加密),并把暴露出来的变量修改为XLSX2

其他库

如果觉得 xlsx-style 的功能不够全面,不能实现需求,这里再推荐一个项目 ExcelJS,这个项目的功能更加全面,而且项目也还在维护,可以试试看能否满足需求。

关联资源下载

包含 3 个 js 文件。

下载地址:https://gaga.lanzoum.com/ixnMF0xz6wwj

参考

本文作者:a

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!