在前端轻量化的导出表格数据

简介: 在前端轻量化的导出表格数据

序言



对于后台管理系统而言(这里指前端部分),可视化的表格展现数据是必不可少的部分,而将这些表格数据导出为 Excel 或 Number 等软件可打开的文件的这种需求也很常见,一般这个功能都是在服务器端如 node 实现,但是现在我们换一个角度。


前端能够将数据展现出来,这意味着前端已经拿到了这些数据,而至于后续想怎么操作完全看自己心情,那么能否脱离后台实现上述需求呢?答案是肯定的,下面简单的介绍一种轻量化的导出方法。



CSV、Blob、a.download



CSV 名为逗号分隔值(也叫字符分隔值),是一种纯文本。每列数据以逗号 ',' 分隔,每行数据以 ' \r\n ' 分隔。


为了在前端实现对文件的操作,我们需要用到 Web API 中的 Blob 对象, 一个 Blob 对象表示一个不可变的、原始数据的类似文件对象,利用此 Blob 对象即可将 CSV 原始数据封装。


另外为了在前端触发文件的下载,还需要用到 a 标签的 download 属性,当然还有 href 属性对文件对象的引用。



实战



啰嗦了一大堆,来点代码才是最实际的,这里的重点其实就是将手里的数据(大部分是 json 形式的数组格式)转换为 CSV 的形式。



如上图所示,我准备了一个 json 格式的数组作为原始数据,首先我们定义每一列的表头,然后根据表头的顺序遍历 json 数组以逗号分隔依次拼接每一列的内容,每一个 json 对象构成了表格中的一行,因此遍历完随即加上 ' \r\n ' 分隔为行。

将文件下载的操作进行封装,设置 download 标识,依次判断是否触发了下载的操作,上图中我都进行了注释。



注意



使用 CSV 一个很重要的点是,对于数字,Excel 会自动展示为科学计数法的形式,对于上述例子中的 ' 1-1 ' 的形式,Excel 会自动展示为 ' 1月1日 ',为了避免这种情况,请使用制表符加逗号 ' \t,' 作为分隔符。



进阶



也许你应该注意到了上述例子中的表头生成的很突兀,而且对应表头生成数据的形式也很死板,下面我们就对此进行改进。


在数据库中存储的数据 key 值肯定是英文而不是中文,但是作为表头展示时当然又得用中文,对此,我们提供一个配置项 config 来说明表头的中英文对应关系。



上图中,我们进一步的封装,对函数提供两个参数,第一个参数 data 传递 json 数组形式的原始数据,第二个 config 参数以对象的形式传递可配置的表头中英文对应关系。

而在生成具体的表头和表格内容时根据 config 配置项,一一对应拼接。



结语



这次站在前端的角度写了这篇文章,仅仅为了提供了另一种在前端就生成表格数据的方法,当然 CSV 是很轻量的,其无碍于你使用哪种前端框架(react、vue、angular 都可以),而缺点就是其并不能直接进行合并单元格这类更复杂的操作,但是仅仅为了展示数据的话也是不错的选择,毕竟减少了对后台的依赖以及前后文件传输的过程,最后怎么选择当然全看你自己了。

目录
相关文章
|
2月前
|
前端开发 JavaScript 微服务
jeecg-boot前端实现表格插槽、定制化修改
jeecg-boot前端实现表格插槽、定制化修改
56 0
|
2月前
|
前端开发
Web前端---表格和表单
Web前端---表格和表单
27 1
|
2月前
|
存储 前端开发
web前端开发----------表格
web前端开发----------表格
47 0
|
5月前
|
前端开发 JavaScript API
前端 excelex 包可将数据保存为 xls、xlsx、csv、txt 文件(支持单元格样式、合并单元格等)
前端 excelex 包可将数据保存为 xls、xlsx、csv、txt 文件(支持单元格样式、合并单元格等)
65 1
|
4月前
|
前端开发 JavaScript 关系型数据库
若依框架------后台路由数据是如何转换为前端路由信息的
若依框架------后台路由数据是如何转换为前端路由信息的
115 0
|
22小时前
|
JSON JavaScript Java
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
5 0
|
16天前
|
存储 缓存 前端开发
前端如何利用indexDB进行数据优化
使用IndexedDB作为浏览器内置的客户端数据库,用于存储大量数据和实现离线支持。它能缓存常用数据,减少服务器请求,提高用户体验。IndexedDB支持数据索引、复杂查询及版本管理,允许离线操作并同步到服务器。但需熟悉其异步API,可借助Dexie.js、localForage等库简化使用。
|
20天前
|
前端开发 API 数据库
Django(五):如何在Django中通过API提供数据库数据给前端
Django(五):如何在Django中通过API提供数据库数据给前端
|
3月前
|
前端开发 Java API
WebSocket vs SSE: 实时数据推送到前端的选择与实现(详细)
WebSocket vs SSE: 实时数据推送到前端的选择与实现(详细)
292 0
|
3月前
|
JavaScript 前端开发 开发者
深入理解前端框架Vue.js的数据响应式原理
本文将深入探讨Vue.js前端框架中的数据响应式原理,包括双向绑定、依赖追踪和虚拟DOM等核心概念。通过详细解析Vue.js内部实现机制,读者能够更好地理解其工作原理,并在实际开发中更灵活地运用。