1. 程式人生 > 其它 >通過SheetJS(XLSX)前端解析、生成Excel檔案

通過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');