js讀取EXCEL文件,進行一些數據處理

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" οnclick="ReadExcel();" value="read">
<br>
<textarea id="txtArea" cols=50 rows=10></textarea>
</body>
</html>

注:js裏面操作數據,注意類型轉換,否則可能導致結果不正確(截取字符等)

       excel裏數據: 行、列均是從1開始計算,

發佈了48 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章