之前写文章介绍了使用 js-xlsx 实现导入 excel 的功能,现在再介绍一下如何使用 js-xlsx 进行 excel 导出。

【实现步骤】

1. 首先安装依赖

npm install xlsx --save

2. 在组件中导入 xlsx

import XLSX from 'xlsx';

3. 提供导出按钮,编写导出方法

<Button type='primary' onClick={this.handleExport}>EXCEL 导出</Button>
handleExport = () => {
const sheetData1 = data1.map(item => ({
'ID': item.id,
'收件人': item.name,
'手机号': item.phone,
'扫描时间': item.scanTime,
}));
// 支持多 sheet
// const sheetData2 = data2.map(item => ({
// // 在这里设置表头和对应项的值
// }));
// const sheetData3 = data3.map(item => ({
// // 在这里设置表头和对应项的值
// }));
// ... const sheet1 = XLSX.utils.json_to_sheet(sheetData1);
// 支持多 sheet
// const sheet2 = XLSX.utils.json_to_sheet(sheetData2);
// const sheet3 = XLSX.utils.json_to_sheet(sheetData3);
const wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, sheet1, '收件人列表');
// 支持多 sheet
// XLSX.utils.book_append_sheet(wb, sheet2, '表格 sheet2');
// XLSX.utils.book_append_sheet(wb, sheet2, '表格 sheet2');
const workbookBlob = workbook2blob(wb);
// 导出最后的总表
openDownloadDialog(workbookBlob, '收件人列表.xlsx');
}

注:要导出数据的 json 格式应该是这样的(每个对象代表表格中的一行数据)

[{
id: '1',
name: '张三丰',
phone: '16834567890',
}, {
// ...
}]

【效果演示】

点击右上角导出按钮,浏览器会自动下载表格文件,如下:

打开表格,查看数据,发现页面中的表格数据和导出内容一致,并且已经按照设置的中文字段显示了。

【问题解决】

1. 如果在导出过程中浏览器报错:XLSX.utils.json_to_sheet is not a function , 可能是因为 xlsx 版本问题导致的,在调用 XLSX.utils.json_to_sheet() 方法前尝试 打印 xlsx 的版本号

console.log(XLSX.version)

经过简单排查,应该是 0.8.8 以下版本不支持 json_to_sheet() 方法,所以直接升级 xlsx 到最新版(目前是 0.14.5 )就可以了。

npm install xlsx@0.14.5 --save

2. 以上只演示了单个 sheet 导出的实现和效果,并且简单给出了多 sheet 导出的实现方案( handleExport 方法中注释部分),关于多 sheet 导出更详细的实现方案,参考 展示 用xlsx库 导出excel,含多个sheet

3. 如何通过 xlsx 实现 excel 的导入和解析,参考 React读取Excel——js-xlsx 插件的使用

【参考资料】

1. SheetJS/sheetjs

2. 展示 用xlsx库 导出excel,含多个sheet

js-xlsx 实现前端 Excel 导出(支持多 sheet)的更多相关文章

  1. JAVA导出Excel(支持多sheet)

    一.批量导出: /** * * @Title: expExcel * @Description: 批量导出客户信息 * @param @param params * @param @param req ...

  2. R语言 write.xlsx() 写入同一excel,及同一sheet注意

    write.xlsx(x, file, sheetName="Sheet1", col.names=TRUE, row.names=TRUE, append=FALSE, show ...

  3. POI导出Excel(xls、xlsx均可以,也支持图片)——(三)

    Jar包

  4. JS 在页面上直接将json数据导出到excel,支持chrome,edge,IE10+,IE9,IE8,Safari,Firefox

    JS 在页面上直接将json数据导出到excel,支持chrome,edge,IE10+,IE9,IE8,Safari,Firefox <html> <head> </h ...

  5. vue后台_纯前端实现excel导出/csv导出

    之前的文件下载功能一般是由前后端配合实现,由于项目需要,纯前端实现了一把excel的导出功能: 一.excel导出 1.安装依赖库 xlsx:这是一个功能强大的excel处理库,但是上手难度也很大,还 ...

  6. 并发编程概述 委托(delegate) 事件(event) .net core 2.0 event bus 一个简单的基于内存事件总线实现 .net core 基于NPOI 的excel导出类,支持自定义导出哪些字段 基于Ace Admin 的菜单栏实现 第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)

    并发编程概述   前言 说实话,在我软件开发的头两年几乎不考虑并发编程,请求与响应把业务逻辑尽快完成一个星期的任务能两天完成绝不拖三天(剩下时间各种浪),根本不会考虑性能问题(能接受范围内).但随着工 ...

  7. # vue 如何通过前端来导出excel表格

    在做一些简单的demo时,偶尔会遇到导出excel表格.如果请后端帮忙的话 比较浪费时间,那么前端如何导出excel表格,下面就来记录一下之前使用到的案例 一.安装依赖 npm i file-save ...

  8. js导入excel&导出excel

    Excel导入 html代码 <button style={{ color: '#1890ff', fontSize: '14px', cursor: 'pointer' }} onClick= ...

  9. 二十六、【开源框架】EFW框架Winform前端开发之Grid++Report报表、条形码、Excel导出、图表控件

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...

随机推荐

  1. HttpClient发起Http/Https请求工具类

    <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcl ...

  2. mysql数据库基础SQL语句总结篇

    常用的sql增删改查语句 创建数据库:create database db_name character set utf8;删除数据库:drop database db_name;切换数据库:use ...

  3. Java中的BufferedImage类、Image类、Graphics类

    https://www.cnblogs.com/jpfss/p/11731812.html

  4. linux用户组相关,密码相关,文件操作,和启动级别

    一.开机重启和用户切换 注意,当关机或重启前,都应当先执行一下sync指令,把内存的数据写入磁盘,防止数据丢失. shutdown命令 shutdown -h now :立即关机 shutdown - ...

  5. Mybatis----resultMap类型详解

    Mybatis----resultMap类型详解 这篇文章主要给大家介绍了关于Mybatis中强大的resultMap功能的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Mybatis具 ...

  6. java之匿名内部类

    Person.java package insof; public class Person extends Object{ String name; static int age; public P ...

  7. Java连载55-接口的作用、接口举例

    一.接口的作用 1.可以使项目分层,所有层都面向接口开发,开发效率提高了. 2.接口使代码和代码之间的耦合度降低,就像内存条和主板的关系,变得“可插拔”,可以随意切换. ​总结:接口和抽象类能够完成某 ...

  8. 使用fidder对安卓模拟器进行抓包

    本文主要介绍fiddler4对安卓模拟器的抓包设置 首先在官网下载fiddler4进行安装,然后下载安卓模拟器,这里使用网易的MuMu模拟器. 1.fiddler4的设置对于fiddler4的设置,首 ...

  9. linux命令--基本权限命令

    一.权限介绍 使用ls命令查看时,发现长格式显示的第一列就是文件的权限 权限位一共有 10 位,这 10 位权限位的含义如下图所示. 第 1 位代表文件类型.Linux 不像 Windows 使用扩展 ...

  10. mysql中concat函数的使用相关总结

    concat(str1,str2) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. mysql> select concat('11','22','33') ...