通过SheetJS(XLSX)前端解析、生成Excel文件

npm install xlsx -S

import XLSX from 'xlsx';
// 解析Excel
// 此处省略获取文件方式,假设file为获取到的文件
const parseExcel = file => {
	var reader = new FileReader();
	reader.onload = function (e) {
		var data = e.target.result;
		var workbook = XLSX.read(data, {
			type: 'binary'
		});
		var first_worksheet = workbook.Sheets[workbook.SheetNames[0]];
		// XLSX自带了一个工具把导入的数据转成json
		var jsonArr = XLSX.utils.sheet_to_json(first_worksheet, {header: 1});
		return jsonArr;
	};
	reader.readAsBinaryString(file);
}


// 根据json生成下载
let mockData = [
	{
		name: '张三',
		age: 18,
		sex: '男'
	},
	{
		name: '李四',
		age: 15,
		sex: '女'
	}
];
// 设置表头
mockData.unshift({
	name: '姓名',
	age: '年龄',
	sex: '性别'
});
	
var worksheet = XLSX.utils.json_to_sheet(mockData, {
	header: ['name', 'sex', 'age'], // 自定义表头顺序
	skipHeader: true// 隐藏键值,可自行改成false下载后对比差异
});

// begin,把每个单元格格式都设置为文本,如果不需要修改单元格格式可省略此处代码
var range = XLSX.utils.decode_range(worksheet['!ref']);
for (var row = range.s.r; row <= range.e.r; row++) {
	for (var columns = range.s.c; columns <= range.e.c; columns++) {
	    var cellName = XLSX.utils.encode_cell({c: columns, r: row});
	    worksheet[cellName].z = '@';
	}
}
// end

var new_workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(new_workbook, worksheet, 'Sheet1');
// 设置文件名,自动执行下载
XLSX.writeFile(new_workbook, '人员信息.xlsx');
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值