xlsx.full.js读取Excel数据转换成二维数组,sheet_to_array

xlsx.full.js读取Excel的sheet数据转换成二维数组,sheet_to_array


鉴于js-xlsx.js没有 XLSX.util.sheet_to_array()方法,于是自己实现了一个。

解析sheet数据为二维数组

// 解析sheet数据为二维数组
function parseExcelSheetToArrays(sheet) {
	const Range = {
	  x1: sheet['!ref'].split(':')[0].match(/^[A-Z]+/)[0],
	  y1: sheet['!ref'].split(':')[0].match(/\d+$/)[0],
	  x2: sheet['!ref'].split(':')[1].match(/^[A-Z]+/)[0],
	  y2: sheet['!ref'].split(':')[1].match(/\d+$/)[0],
	};
	
	let tableDataArr = [];
	for (let y = Range.y1; y <= Range.y2; y++) { // 行遍历
	  let rowArr = [];
	  for (let x = Range.x1.charCodeAt(); x <= Range.x2.charCodeAt(); x++) { // 列遍历 TD:暂时只支持到A~Z列,有需要的自己优化
	    let position = String.fromCharCode(x) + y;
	    rowArr.push(sheet[position] ? sheet[position].v : null);
	  }
	  tableDataArr.push(rowArr);
	}
	return tableDataArr;
}

测试方法

function TestFn(){
	let file = document.getElementById('input').files[0]; // 获取文件
	let reader = new FileReader();
	// 读完后的事件
	reader.onload = function (e) {
		let data = e.target.result;
		// 使用XLSX.full.js去解析文件数据
		let wb = XLSX.read(data, { type: 'binary'}); //以二进制的方式解析
		let sheet0 = wb.Sheets[wb.SheetNames[0]]; //sheet0代表excel表格中的第1个工作表
		// 解析为二维数据
		let arr = parseExcelSheetToArrays(sheet0);
		console.log(arr);
	};
	// 读取文件
	reader.readAsBinaryString(file);
}

效果

在这里插入图片描述
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值