js讀取Excel的資料(僅IE有效)
阿新 • • 發佈:2019-01-31
/** * 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; }