js读取Excel,返回一个二维数组
/**
* desc:解析一个本地excel,返回一个二维数组
* param {}对象 属性 path,sheet,rowStart,rowEnd,colStart,colEnd,cols, cols为数组如[1,3,5]表示135列
* param.path (Excel的路径) 必需 Excel的文件路径,为空返回空数组[]
* param.sheet (Excel的哪个sheet,正整数) 不传或传空为1
* param.rowStart (从哪一行开始,正整数) 不传或传空为1
* param.rowEnd (哪一行结束,正整数) 不传或传空为10000
* param.colStart (哪一列开始,正整数) 不传或传空为1
* param.colEnd (哪一列结束,正整数) 不传或传空为param.colStart
* param.cols (哪些列,正整数数组) 不传cols或空数组,按照colStart,colEnd来取列;否则按照cols数组来取值
*/
function parseExcel(param){
var path=param.path;
if((path===undefined)||(path=="")){
return [];
}
var sheet=param.sheet;
if((sheet===undefined)||(sheet=="")){
sheet=1;
}
sheet=parseInt(sheet);
var r1=param.rowStart;
if((r1===undefined)||(r1=="")){
r1=1;
}
r1=parseInt(r1);
var r2=param.rowEnd;
if((r2===undefined)||(r2=="")){
r2=10000;
}
r2=parseInt(r2);
var cols=param.cols;
if((cols===undefined)||(cols.length==0)){ //没传cols或者为空时,根据colStart,colEnd来
cols=[];
var c1=param.colStart;
if((c1===undefined)||(c1=="")){
c1=1;
}
var c2=param.colEnd;
if((c2===undefined)||(c2=="")){ //不传colEnd,只查colStart一列
c2=1;
}
//构造cols
for(i=c1;i<=c2;i++){
cols.push(i);
}
}
for(var i=0;i<cols.length;i++){
cols[i]=parseInt(cols[i]);
}
var xlsExcel = new ActiveXObject("Excel.Application");
try{
var wb = xlsExcel.Workbooks;
var xlsBook = wb.Open(path);
}catch(e){
wb = null;
//xlsExcel.Quit();
xlsExcel = null;
//+e.message
//alert("在电脑上未找到"+path);
return [];
}
var xlsSheet = xlsBook.Worksheets(sheet);
var hasValue = true;
var rowind=r1;
var cell="";
var rows=[];
while(hasValue && (rowind<=r2)){
cell=xlsSheet.cells(rowind,cols[0]).value||"";
if ((typeof cell==="undefined")||(cell=="")){
hasValue=false;
}else{
var row=[cell];
for(j=1;j<cols.length;j++){
cell = xlsSheet.cells(rowind,cols[j]).value||"";
row.push(cell);
}
rows.push(row);
}
rowind++;
}
xlsSheet = null;
xlsBook.Close(savechanges=false);
xlsBook = null;
xlsExcel.Quit();
xlsExcel = null;
return rows;
}