js讀取EXCEL檔案,進行一些資料處理
阿新 • • 發佈:2019-02-12
1.僅在IE瀏覽器下有效,因為只有IE支援ActiveXObject("Excel.application");
2.程式碼如下
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> New Document </title> <meta name="Generator" content="EditPlus"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <script type="text/javascript"> function ReadExcel() { var tempStr = ""; //得到檔案路徑的值 var filePath = document.getElementById("upfile").value; //建立操作EXCEL應用程式的例項 var oXL = new ActiveXObject("Excel.application"); //開啟指定路徑的excel檔案 var oWB = oXL.Workbooks.open(filePath); //操作第一個sheet(從一開始,而非零) oWB.worksheets(1).select(); var oSheet = oWB.ActiveSheet; //使用的行數 var rows = oSheet.usedrange.rows.count; try { for (var i = 2; i <= rows; i++) { if (oSheet.Cells(i, 2).value == "null" || oSheet.Cells(i, 3).value == "null") break; var a = oSheet.Cells(i, 2).value.toString() == "undefined" ? "" : oSheet.Cells(i, 2).value; var x=parseFloat(oSheet.Cells(i, 2).value); var y=parseFloat(oSheet.Cells(i,3).value); //alert(oSheet.Cells(5, 2).value+"---"+ oSheet.Cells(5,3).value); tempStr +="\n "+twd67ToWGS84(x,y); } } catch (e) { document.getElementById("txtArea").value = tempStr; } document.getElementById("txtArea").value = tempStr; //退出操作excel的例項物件 oXL.Application.Quit(); //手動呼叫垃圾收集器 CollectGarbage(); } function twd67ToWGS84(xcoor,ycoor){var d_a=6378137;var d_f=1/298.257222101;var d_long=121;var d_scale=0.9999;var d_fe=250000;var e2=2*d_f-d_f*d_f;var ep2=e2/(1-e2);var M1=(ycoor-200)/d_scale;var mu1=M1/(d_a*(1-e2/4-3*e2*e2/64-5*e2*e2*e2/256));var e1=(1-Math.sqrt(1-e2))/(1+Math.sqrt(1-e2));var phi1=mu1+(3*e1/2-27*Math.pow(e1,3)/32)*Math.sin(2*mu1)+(21*e1*e1/16-55*Math.pow(e1,4)/32)*Math.sin(4*mu1)+151*Math.pow(e1,3)/96*Math.sin(6*mu1)+1097*Math.pow(e1,4)/512*Math.sin(8*mu1);var v1=d_a/Math.sqrt(1-e2*Math.pow(Math.sin(phi1),2));var ro1=d_a*(1-e2)/Math.pow(1-e2*Math.pow(Math.sin(phi1),2),1.5);var T1=Math.pow(Math.tan(phi1),2);var C1=ep2*Math.pow(Math.cos(phi1),2);var D=(xcoor+826-d_fe)/(v1*d_scale);var outLon=d_long/180*Math.PI+(D-(1+2*T1+C1)*D*D*D/6+(5-2*C1+28*T1-3*C1*C1+8*ep2+24*T1*T1)*Math.pow(D,5)/120)/Math.cos(phi1);var outLat=phi1-(v1*Math.tan(phi1)/ro1)*(D*D/2-(5+3*T1+10*C1-4*C1*C1-9*ep2)*Math.pow(D,4)/24+(61+90*T1+298*C1+45*T1*T1-252*ep2-3*C1*C1)*Math.pow(D,6)/720);outLon=outLon/Math.PI*180;outLat=outLat/Math.PI*180;return [outLon,outLat];} </script> </head> <body> <input type="file" id="upfile"/><input type="button" onclick="ReadExcel();" value="read"> <br> <textarea id="txtArea" cols=50 rows=10></textarea> </body> </html>
注:js裡面操作資料,注意型別轉換,否則可能導致結果不正確(擷取字元等)
excel裡資料: 行、列均是從1開始計算,