Excel导入

html代码

<button style={{ color: '#1890ff', fontSize: '14px', cursor: 'pointer' }} onClick={() => { upFile(); }} >
  导入
</button>
<input id="upFile" type="file" style={{ display: 'none' }} accept=".xlsx, .xls" onChange={upChange} />

js代码

import XLSX from 'xlsx';
const upFile = () => {
const upSdaFile: any = document.getElementById('upFile');
upSdaFile.click();
};
const upChange = (e) => {
const file = e.target.files[0]; // 获取第一个文件
const reader = new FileReader();
reader.readAsBinaryString(file); // 读取这个文件
reader.onload = function (event) {
try {
const { result }: any = event.target;
const xlsxData = XLSX.read(result, { type: 'binary' }); // 读取xlsx
let col: any = null;
// @ts-ignore
for (const n in xlsxData.Sheets) { // eslint-disable-line
// 这里是多张表格 所以写一个循环
col = XLSX.utils.sheet_to_json(xlsxData.Sheets[n], { header: 1, defval: '', blankbook: true }); // 解析为数组
}
console.log('col', col);
} catch (err) {
console.log('err', err);
}
};
};

注意不要引用 0.18.几的xlsx,和其他文件冲突报错找不到,要安装 "xlsx": "0.17.0"

Excel导出

html代码

<Button onClick={() => ecportExcel()} > 导出 </Button>

js代码

const jsonData = [
{ name: '张三', age: 12, gender: '男' },
{ name: '李四', age: 14, gender: '男' },
{ name: '王五', age: 15, gender: '女' },
]
// 前端实现导出
const ecportExcel = (jsonData: any) => {
// 列标题,逗号隔开,每一个逗号就是隔开一个单元格
let str = `序号,名称,年龄,性别\n`;
const tableData: any = []
jsonData.forEach((el: any, index: number) => {
tableData.push({
index: index + 1,
name: el?.name || '',
age: el?.age || '',
gender: el?.gender || '',
})
});
// 增加\t为了不让表格显示科学计数法或者其他格式
for (let i = 0; i < tableData.length; i++) { // eslint-disable-line
for (const key in tableData[i]) { // eslint-disable-line
str += `${`${tableData[i][key]}\t`},`;
}
str += '\n';
}
// encodeURIComponent解决中文乱码
const uri = `data:text/xlsx;charset=utf-8,\ufeff${encodeURIComponent(str)}`;
// 通过创建a标签实现
const link = document.createElement("a");
link.href = uri;
// 对下载的文件命名
link.download = "企业承诺汇总.xlsx";
link.click();
}

欢迎各位大大关注!!!

最新文章

  1. 【位运算经典应用】 N皇后问题
  2. js日期计算及快速获取周、月、季度起止日,获取指定日期周数以及星期几的小例子
  3. SQLServer批量创建有规则的数据
  4. 对比其它软件方法评估敏捷和Scrum
  5. Source insight 3572版本安装及An invalid source insight serial number was detected解决方法
  6. Android MAVEN项目标准目录结构
  7. 在C#中使用WIA获取扫描仪数据
  8. 标准SQL语言的用法
  9. 初次使用Oracle
  10. Oracle Applications Multiple Organizations Access Control for Custom Code
  11. VMware安装ubuntu,通过/mnt/hgfs 挂载共享Windows系统文件夹
  12. C# 截取字符串某个字符分割的最后一部分
  13. Cracking the Coding Interview 题目分析笔记—— Array and String
  14. 关于a标签颜色的探索
  15. 如何修复使用WSUS进行升级Win 10 更新1809的报错(0x8024200)
  16. 咸鱼入门到放弃5--Session和Cookie
  17. 查看Python、flask 版本
  18. JavaScript编程基础2
  19. 【JS】中ajax的URL中包含中文,后台接收乱码
  20. js 创建对象的几种方法

热门文章

  1. Spring 源码(5)BeanFactory使用的准备及自定义属性值解析器
  2. Percona停服俄罗斯
  3. docker:compose安装
  4. python学习-Day27
  5. Bugku练习题---MISC---啊哒
  6. 一文带你读懂zookeeper在大数据生态的应用
  7. Linux screen命令详解
  8. 一文说透 MySQL JSON 数据类型(收藏)
  9. Google Summer of Code谷歌编程之夏活动流程全解析(上)
  10. Redisson批量操作类RBuckets和管道利器RBatch