纯jquery 前端导入 Excel数据 减少服务端压力

纯jquery 前端导入 Excel数据 减少服务端压力
前提是要导入jq库在这里就不再累述
重要的是导入xlsx.core.min.js
我根据xlsx.core.min.js编写自己的工具类

这里是导入数据解析的方法

function parseXlsx( workbook, sheetName, jsonObjects, callback ) {
	// 遍历每张表读取
	if (workbook.Sheets.hasOwnProperty(sheetName)) {
		jsonObjects= XLSX.utils.sheet_to_json(workbook.Sheets[sheetName]);
		
	}else
		jsonObjects = [];
	
	//处理每条数据
	callback(JSON.stringify(jsonObjects), 0 );
}

将excel的file读取成json的格式(此处只能用于非IE浏览器)

function readXlsxFileFromLocal( file, sheetName, jsonObjects, callback ) {
	var reader = new FileReader();
		reader.onload = function(e) {
			var data = e.target.result;
			var workbook = XLSX.read(data, {type: 'binary'});
			parseXlsx(workbook, sheetName, jsonObjects, callback);
	};
	reader.readAsBinaryString(file);
}

将excel的sheet读取成sheet1,sheet2,sheet3的字符串(此处只能用于非IE浏览器)

function readXlsxFilesheetNameSFromLocal( file, callback ) {
	var reader = new FileReader();
		reader.onload = function(e) {
			var data = e.target.result;
			var workbook = XLSX.read(data, {type: 'binary'});
			if(callback)callback( workbook.SheetNames  );
	};
	reader.readAsBinaryString(file);
}

这里是IE浏览器环境下调取方法同上不再累述

function readXlsxFilesheetNameSFromLocalforIE( file, callback ) {
	 var binary = "";
     var pt = this;
     var reader = new FileReader();      
     reader.onload = function (e) {
         var bytes = new Uint8Array(reader.result);
         
         var length = bytes.byteLength;
         for (var i = 0; i < length; i++) {
             binary += String.fromCharCode(bytes[i]);
         }
	  pt.content = binary;
	  $(pt).trigger('onload');
	  var workbook = XLSX.read(binary, {type: 'binary'});
	  if(callback)callback( workbook.SheetNames  );
  }
  reader.readAsArrayBuffer(file);
}


function readXlsxFileFromLocalforIE( file,sheetName,jsonObjects,callback ) {
	 var binary = "";
    var pt = this;
    var reader = new FileReader();      
    reader.onload = function (e) {
        var bytes = new Uint8Array(reader.result);
        
        var length = bytes.byteLength;
        for (var i = 0; i < length; i++) {
            binary += String.fromCharCode(bytes[i]);
        }
	  pt.content = binary;
	  $(pt).trigger('onload');
	  var workbook = XLSX.read(binary, {type: 'binary'});
	  parseXlsx(workbook, sheetName, jsonObjects, callback);
 }
 reader.readAsArrayBuffer(file);
}

使用时判断是否是IE浏览器

if (!FileReader.prototype.readAsBinaryString) {
		console.log("IE");
}else{
		console.log("Other");
}
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值