您的位置:首页 > Web前端 > JavaScript

JS 读取Excel文件(xls) 兼容Chrome/IE/Firefox

2017-06-26 10:35 1116 查看
想读取Excel首先需要两个JS文件。

下载地址

Html代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
<!-- Excel插件 -->
  <script src="../../../public/static/js/shim.js"></script>
<script src="../../../public/static/js/xls.js"></script>

<!-- 自定义JS -->
<script src="../../../public/static/js/excel.acc.js"></script>
 </head>

 <body>
<!-- 必须有个文件上传 -->
  	<input type="file" id="xlf" name="xlf" />
<br>
<!-- 输出查看 -->
<textarea id="txtArea" cols=50 rows=10></textarea>

<script type='text/javascript'>

var drop = document.getElementById('xlf');

//添加Change绑定事件
if(drop.addEventListener) {
drop.addEventListener('change', handleFile, false);
}

function excelReader(data,json) {
//输出
document.getElementById('txtArea').innerText = json;
}

</script>
 </body>
</html>


JS代码(excel.acc.js): 

// 依赖于shim.js、xls.js
//

var X = XLS;

function to_json(workbook) {
var result = {};
workbook.SheetNames.forEach(function (sheetName) {
var roa = XLS.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
if (roa.length > 0) {
result[sheetName] = roa;
}
});
return result;
}

function fixdata(data) {
var o = "", l = 0, w = 10240;
for (; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
return o;
}

function process_wb(wb,type) {
var output = "";
switch (type) {
case "json":
output = JSON.stringify(to_json(wb), 2, 2);
break;
case "form":
output = to_formulae(wb);
break;
default:
output = to_csv(wb);
}
//if (out.innerText === undefined) out.textContent = output;
//else out.innerText = output;
return output;
}

function ReadExcel(out) {

//如果只要json 可以不用转换
var exlData = JSON.parse(out);

// Page1 其实是表格页标签名字,具体示实际名称
// if (exlData.Page1 == null || exlData.Page1 == undefined) {
//     msgErro("未查询到Excel文件中的数据!");
//     //saveLoading('hide');
//     return;
// }

//传出外面
excelReader(exlData,out);
}

//绑定 Input Change 事件
function handleFile(e) {

if (e.target.files[0].name.indexOf(".xls") < 0) {
msgErro("请选择.xls格式文件!");
return;
}
//saveLoading('show');

var files = e.target.files;
var output = "";
var f = files[0];
{
var reader = new FileReader();
var name = f.name;
reader.onload = function (e) {

var data = e.target.result;

var arr = fixdata(data);
var wb = X.read(btoa(arr), { type: 'base64' });

output = process_wb(wb, "json");

ReadExcel(output);
};

reader.readAsArrayBuffer(f);
}
}


如上两页代码+JS-Excel插件即可完成读取Xls文件。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript Excel php html
相关文章推荐