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开始计算,