最近实现的导出数据为表格的需求,不需要工具库,也不要后端实现,mark 一下。

js 导出 excel 表格

最近工作中又遇到了将表格数据导出为 excel 表格的需求,我第一时间想到的是之前我的网站上推荐过的 javascript 库 node-xlsx,这是一个在 node.js 服务端使用的库,之前用于电商系统导出订单数据给运营同事,使用比较简单,但仍需要后端实现。

需求简单分析

这次的需求有下面几个特点:

  • 数据类型几乎都是文本,没有太多数字型的列
  • 没有太多需要统计或者汇总等计算结果的输出的行
  • 需要导出的数据已经在前端全部加载并展示

解决方案确定

带着不想麻烦后端的想法,我尝试寻找纯前端实现数据导出 excel 表格的方法。找了一圈,发现效果不理想,要么太复杂,要么导出的 xlsx 文件兼容性有问题。突然一激灵,想到之前用过的数据统计应用导出的文件格式是 csv 的,稍微研究了一下,最后我把决定把导出的文件格式转为了 csv 表格。

csv 是什么格式的文件?

csv 是一种主要以逗号为分隔符的分隔值文件格式,以纯文本的形式储存表格数据,常常用来作为不同应用程序间转移数据使用。

  • 用逗号作为表格列分隔符,当然也可以用其他分隔符,不过为了通用性,推荐用逗号
  • 纯文本格式,读取、写入都很简单
  • 每一行文本就是表格的一行数据
  • 几乎能被所有的表格应用支持,excel 和 wps 更是老早就支持导入 csv 文件

看到这里,相信很多开发者已经知道,只要把数据处理成符合上面格式的字符串,然后把 csv 的文件头加上,通过 标签下载,就完成了导出文件下载到本地的需求。

代码实现

假设有如下表格数据:

const tableRows = [['姓名','手机号','部门'], // 第一行就是表格表头['尤与西','131xxxx','技术部'],['阮易枫','158xxxx','技术部'],['廖学丰','189xxxx','技术部']
]

构造 CSV 字符:

// 构造数据字符,换行需要用\r\n
let CsvString = tableRows.map(data => data.join(',')).join('\r\n');
// 加上 CSV 文件头标识
CsvString = 'data:application/vnd.ms-excel;charset=utf-8,\uFEFF' + encodeURIComponent(CsvString);
// 通过创建a标签下载
const link = document.createElement('a');
link.href = CsvString;
// 对下载的文件命名
link.download = `技术部顶级员工列表.csv`;
// 模拟点击下载
link.click();
// 移除a标签
link.remove();

这样就会直接从浏览器下载,完美完成需求。

注意事项

csv 文件默认是每一行为一条数据,如果导出表格的单元格里需要换行,则需要用双引号包裹起来,比如构造出的 CSV 字符串:

尤与西,136xxxx,技术部,"第二小组
技术主管",001
阮易枫',158xxxx,技术部,"第三小组
技术主管",002

上面数据导出表格共2条数据,每行第4列的“小组”和“技术主管”之间的换行会保留。

另外,这种方式不支持合并单元格、设置数据类型的格式,如果输出的表格对格式要求较高,还是老老实实用 node-xlsx 吧。

最后祝大家早点完成需求,早点下班。

原文链接:https://www.thosefree.com/js-export-to-csv

不用任何 js 库,纯前端导出数据到 Excel / CSV 文件就这么简单几行代码相关推荐

  1. vue实现纯前端导入与解析excel表格文件,导出Excel

    一.安装相关依赖 npm install --save xlsx file-saver 二.使用 import * as XLSX from 'xlsx/xlsx.mjs' const FileSav ...

  2. web前端导出数据到excel表格

    安装依赖 npm install xlsx file-saver -S npm install script-loader -S -D 封装Export2Excel.js /* eslint-disa ...

  3. js 将二进制流html导出excel,js 实现纯前端将数据导出excel

    使用table标签方式将json导出xls文件 导出 function tableToExcel(){ //要导出的json数据 const jsonData = [ { name:'路人甲', ph ...

  4. vue2 使用 Export2Excel.js 前端导出数据为 excel 文件记录

    1.将 export2Excel.js 内容复制到项目本地文件中 export2Excel.js 地址: https://github.com/PanJiaChen/vue-element-admin ...

  5. android导出excel文件名称,android 导出数据到excel表格文件

    这是一个导出 excel表格的功能 从创建数据库 到导出表格到文件管理 package com.ldm.familybill; import java.io.File; import java.tex ...

  6. 如何在 Vue 中导出数据至 Excel 表格 - 卡拉云

    本文首发:<如何在 Vue 中导出数据至 Excel 表格 - 卡拉云> 我们经常需要在 Vue 搭建的后台管理系统里导出数据到 Excel / CSV ,方便我们将数据共享给其他同学或在 ...

  7. 前端利用JS导出数据到Excel表 数字是文本类型 无法计算

    问题描述:前端利用JS导出数据到Excel表 数字是文本类型 无法进行公式计算:前端利用JS导出数据到Excel表 数字是文本类型 无法计算 解决办法:参考https://bbs.csdn.net/t ...

  8. 纯前端导出word、pdf、excel、txt、svg文档方法与技巧(附带问题总结)

    文章目录 导出pdf **实现思路:** **问题总结:** **具体代码** **封装好的导出函数,记得引入js插件** 封装方法一: 封装方法二: 封装方法三: 纯前端导出word文档方法与技巧 ...

  9. 纯前端使用js-xslx实现excel导入导出

    参考文章:纯前端利用 js-xlsx 实现 Excel 文件导入导出功能示例(2) - 简书 (jianshu.com) 导入: <!DOCTYPE html> <html> ...

最新文章

  1. 易开发创始人潘俊勇:这些年我遇到的那些坑
  2. axios请求接口http_Vue实战038:api接口模块化统一管理
  3. web常用正则表达式
  4. smarty中英文多编码字符截取乱码问题
  5. PocketSphinx语音识别系统声学模型的训练与使用
  6. android非空验证,Android 非空格式验证框架
  7. 具体数学-第10课(素数和阶乘的有趣性质)
  8. css单行文本和多行文本溢出实现省略号显示
  9. 关于存储容量的单位(以及英文写法)
  10. MySQL数据库:参数优化
  11. 计算机网络工程税收分类编码,工程款税收分类编码
  12. Linux文件加密方式gzip和bzip
  13. MVC WebAPI 三层分布式框架开发
  14. BP 神经网络的数据分类
  15. 数学三大核心领域概述:代数
  16. 一个c加一个g是什么牌子_C和G打头的手表都有哪些?
  17. github.io连接被重置的解决办法
  18. WTL CCheckListViewCtrl详解及示例
  19. Java Android、IOS、前端、数据库、C++、Unity3D、Python学习资料
  20. 考研计算机科学与技术属于,考研报名计算机科学与技术属于哪一类

热门文章

  1. ML-Agents与python的Low Level API通信
  2. 恢复MAC保存丢失的word文档
  3. 移动安全规范 — 3 -个人密码(PIN)传输规范
  4. background-image背景图片拉伸平铺
  5. 机器学习入门目标检测之印章检测和分类
  6. 弘辽科技:淘宝平台如何处理商家sku作弊问题?有哪些处罚?
  7. 程序员兼职从平台接私活
  8. Markdown中插入数学公式的方法
  9. 82597-82-8,cyclo-(L)-Trp-(L)-Phe,cyclo(Phe-Trp)
  10. rtthread定时器的实现