以下为实际开发过程中自行封装的方法,其中包括了读取多sheet,指定单列,指定多列,读取多行数据的适应方法。使用时引入js工具,对读取的行列参数进行配置,对应修改input[file]的ID或class,然后直接调用 readExcelData(type) 方法就可返回Excel的数据数组。type是为区分多种读取规则指定的参数。
/*
* 封装前端读取Excel指定行列数据的函数
*
* */
$(function(){
//定义公用对象
var zyType = $("#zyType").val();
/**只读某列数据配置下列参数(当年台账数)**/
thisSheets = [];
thisRowIndex = [];
thisColIndex = [];
/**只读某列数据配置下列参数(上年台账数)**/
oldThisSheets = [];
oldThisRowIndex = [];
oldThisColIndex = [];
/**同时读行列数据的配置下列参数**/
mySheets = [];
myRowIndex = [];
myColIndex = [];
initReadPara(zyType);
});
//查看
function readExcelData(type){
/**读取专业名称,限定只能导入包含专业名称的excel文件**/
var zyName = $("#zyName").val();
var fileAddress = $('#fileAddress').val();
var ext = fileAddress.substr(fileAddress.lastIndexOf(".")).toLowerCase();
var name = fileAddress.substr(fileAddress.lastIndexOf("\\")).toLowerCase();
if(fileAddress == "") {
layerAlert("提示","请选择excel文件!");
return null;
}else if(ext !=".xlsx" && ext !=".xls"){
layerAlert("提示","只能导入xls、xlsx格式的文件!");
return null;
}else if(name == "" || name.indexOf(zyName) == -1){
layerAlert("提示","只能导入各专业指定的台账模板文件!");
return null;
}else{
return getvl(type) ;
}
}
//获取文件本地物理路径并读取
function readExcel(filePath, type) {
var html_code;
//得到文件路径的值
filePath = filePath ;
oXL = new ActiveXObject("Excel.Application");
oWB = oXL.Workbooks.open(filePath);
var resultArry = new Array();
/**判断是否需要读某一列的数据**/
if(typeof(type) != "undefined" && type == "old") {
if(oldThisSheets.length > 0) {
//遍历需要读取的sheet表
var index = 0;
for(var i=0;i<oldThisSheets.length;i++){
var s = oldT