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

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

序言



对于后台管理系统而言(这里指前端部分),可视化的表格展现数据是必不可少的部分,而将这些表格数据导出为 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 都可以),而缺点就是其并不能直接进行合并单元格这类更复杂的操作,但是仅仅为了展示数据的话也是不错的选择,毕竟减少了对后台的依赖以及前后文件传输的过程,最后怎么选择当然全看你自己了。

目录
相关文章
|
1月前
|
前端开发 JavaScript 微服务
jeecg-boot前端实现表格插槽、定制化修改
jeecg-boot前端实现表格插槽、定制化修改
97 0
|
1月前
|
前端开发
Web前端---表格和表单
Web前端---表格和表单
38 1
|
1月前
|
存储 前端开发
web前端开发----------表格
web前端开发----------表格
61 0
|
1月前
|
前端开发 JavaScript API
前端 excelex 包可将数据保存为 xls、xlsx、csv、txt 文件(支持单元格样式、合并单元格等)
前端 excelex 包可将数据保存为 xls、xlsx、csv、txt 文件(支持单元格样式、合并单元格等)
72 1
|
1月前
|
前端开发 JavaScript 关系型数据库
若依框架------后台路由数据是如何转换为前端路由信息的
若依框架------后台路由数据是如何转换为前端路由信息的
168 0
|
3天前
|
前端开发 JavaScript 数据处理
前端新手指南:如何解决JavaScript导出CSV文件不完整的问题
【6月更文挑战第4天】在JavaScript中处理CSV文件时,需要特别注意一些特殊字符,例如逗号、双引号、换行符等。这些字符可能会影响CSV文件的解析,导致数据错乱。
17 0
|
6天前
|
JSON 前端开发 JavaScript
前端上传文件前校验文件数据
该文介绍了如何在Vue项目中实现批量导入Excel数据的校验。使用Element UI的`el-upload`组件上传文件,通过FileReader读取内容,结合XLSX库解析Excel为JSON。解析过程包括将二进制数据转换为workbook对象,提取worksheet并转化为JSON。之后,遍历JSON数据进行字段校验,若发现空值则记录错误。提供的Demo展示了选择Excel文件后控制台显示校验结果。技术栈包括vue 2.6.14、element ui 2.15.14和xlsx 0.17.0。建议将此类功能封装为通用组件以复用。
18 2
前端上传文件前校验文件数据
|
1月前
|
JSON 前端开发 JavaScript
前端使用lottie-web,使用AE导出的JSON动画贴心教程
前端使用lottie-web,使用AE导出的JSON动画贴心教程
|
29天前
|
JSON Rust 前端开发
【sheetjs】纯前端如何实现Excel导出下载和上传解析?
本文介绍了如何使用`sheetjs`的`xlsx`库在前端实现Excel的导出和上传。项目依赖包括Vite、React、SheetJS和Arco-Design。对于导出,从后端获取JSON数据,通过`json_to_sheet`、`book_new`和`writeFile`函数生成并下载Excel文件。对于上传,使用`read`函数将上传的Excel文件解析为JSON并发送至后端。完整代码示例可在GitHub仓库[fullee/sheetjs-demo](https://github.com/fullee/sheetjs-demo)中查看。
69 10
|
1月前
|
前端开发 关系型数据库 MySQL
SpringBoot-----从前端更新数据到MySql数据库
SpringBoot-----从前端更新数据到MySql数据库
28 1

热门文章

最新文章