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');
GitHub 加速计划 / sh / sheetjs
34.82 K
8 K
下载
📗 SheetJS Spreadsheet Data Toolkit -- New home https://git.sheetjs.com/SheetJS/sheetjs
最近提交(Master分支:2 个月前 )
3f44ddd9 - 9 个月前
5b4806bf - 1 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐