1. 程式人生 > >js讀取Excel的資料(僅IE有效)

js讀取Excel的資料(僅IE有效)

/**
 *  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;
}