后台生成 xlsx 文件

简介: 后台生成 xlsx 文件

01


序言


我几个月前写过一篇文章: 在前端轻量化的导出表格数据  ,这篇文章的主要内容是将前端已经获取到的表格数据加工成 CSV 格式以导出到用户本地,但是对于一个做了分页处理的后台管理系统而言,前端并不是一次性的拿到所有数据,而这时如果用户需要粗暴的一次性导出所有表格数据( 包括没有加载到前端的数据 )呢,我们肯定是直接在后台操作比较好。


如果你看过上一篇文章,也许你会问:我们能否在后台依然将数据导出为 CSV 格式的文件呢? 答案是:当然可以。不过上一篇文章已经说明了怎么去处理 CSV 格式,这篇文章就不再重复说明,而是换成了 xlsx 格式的文件。


这里主要选择 js-xlsx 和 exceljs 这两个库来进行操作并简要说明。


02


js-xlsx


对于处理 Excel 来说 js-xlsx 大概是 star 数最多的一个库了,废话不多说,直接上代码。


我们先创建简单的测试数据:


 然后建立一个简单的 http 服务器生成 xlsx 文件并作为响应返回给用户:

重点看下红色标记处即可,相应操作非常简单,并且我已经做了注释说明,用户只要请求这个地址就会自动下载该 xlsx 文件。


对于 js-xlsx 这个库,我不得不说的是虽然文档写了很多,但其实效果并不怎么样,我也并不怎么喜欢这个库。



03


exceljs


相比于上面的 js-xlsx ,我更喜欢也推荐大家使用 exceljs 这个库。


测试数据:


后台操作:

同样重点关注红色圈中的内容,你可以看到我能够很方便的设置行或列的宽高、及其是否隐藏等属性,并且操作数据也很自然,最后显示的效果:

除此之外,exceljs 对于某行、某列、某个具体的单元格都可以很灵活的设置其样式( 是否加粗、宽高多少、边距多少、什么颜色、什么字体等等 )或者统计行列,合并单元格等等,总之是非常优秀的,并且其文档比 js-xlsx 好太多。


全篇完。

目录
相关文章
|
监控 安全 机器人
通过GitHub Actions给微信公众测试号和钉钉群定时推送消息(Python)
通过GitHub Actions给微信公众测试号和钉钉群定时推送消息(Python)
505 0
|
4月前
|
存储 缓存 API
信息检索重排序技术深度解析:Cross-Encoders、ColBERT与大语言模型方法的实践对比
本文将深入分析三种主流的重排序技术:Cross-Encoders(交叉编码器)、ColBERT以及基于大语言模型的重排序器,并详细阐述各方案在实际应用中的性能表现、成本考量以及适用场景。
390 3
信息检索重排序技术深度解析:Cross-Encoders、ColBERT与大语言模型方法的实践对比
|
网络协议 算法 关系型数据库
解读 MySQL Client/Server Protocol: Connection & Replication(上)
解读 MySQL Client/Server Protocol: Connection & Replication
310 0
|
算法 虚拟化 C++
VMware虚拟机无法自适应和拖拽复制粘贴和共享目录问题
VMware虚拟机无法自适应和拖拽复制粘贴和共享目录问题
1420 0
|
存储 关系型数据库 MySQL
MySQL 字段类型深度解析:VARCHAR(50) 与 VARCHAR(500) 的差异
在MySQL数据库中,`VARCHAR`类型是一种非常灵活的字符串存储类型,它允许存储可变长度的字符串。然而,`VARCHAR(50)`和`VARCHAR(500)`之间的差异不仅仅是长度的不同,它们在存储效率、性能和使用场景上也有所不同。本文将深入探讨这两种字段类型的区别及其对数据库设计的影响。
448 2
|
存储 缓存 文件存储
如何保证分布式文件系统的数据一致性
分布式文件系统需要向上层应用提供透明的客户端缓存,从而缓解网络延时现象,更好地支持客户端性能水平扩展,同时也降低对文件服务器的访问压力。当考虑客户端缓存的时候,由于在客户端上引入了多个本地数据副本(Replica),就相应地需要提供客户端对数据访问的全局数据一致性。
32187 78
如何保证分布式文件系统的数据一致性
|
人工智能 前端开发 JavaScript
Web 1.0、Web 2.0 和 Web 3.0 之间的比较
Web 1.0、Web 2.0 和 Web 3.0 之间的比较
515 0
Web 1.0、Web 2.0 和 Web 3.0 之间的比较
|
数据安全/隐私保护 C++
c++实现http客户端和服务端的开源库以及Base64加密密码
c++实现http客户端和服务端的开源库以及Base64加密密码
353 0
|
SQL 存储 关系型数据库
解读 MySQL Client/Server Protocol: Connection & Replication(下)
解读 MySQL Client/Server Protocol: Connection & Replication
365 1
|
编解码 网络协议 开发工具
轻量级RTSP服务模块和RTSP推流模块适用场景区别
好多开发者一直搞不清轻量级RTSP服务SDK和RTSP推流SDK的区别(Github下载地址),以下是相关区别:
258 0