excel----->json数据
依赖:
这里引入网上的依赖,本地以来自己去下载。
//jquery的js库
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
//sheet.js的核心库
<script type="text/javascript" src="https://cdn.staticfile.org/xlsx/0.15.1/xlsx.core.min.js"></script>
webkitdirectory
该属性是Html中可选择文件夹(目录)的一个属性。
<div class="nav">
<!-- webkitdirectory directory multiple -->
<input type="file" id="excel" webkitdirectory >
</div>
获取File
$('#excel').change(function (e) {
var files = e.target.files; //获取文件
for (let i = 0; i < files.length; i++) {
//文件路径
console.log(file[i].webkitRelativePath)
//文件名
console.log(files[i].name)
}
});
读取excel数据并转换为json数据
//传入一个文件
function read(files) {
// 以二进制方式打开文件
if (files.length == 0) {
return;
}
for (let i = 0; i < files.length; i++) {
var fileReader = new FileReader();
fileReader.readAsBinaryString(files[i]);
fileReader.onload = function (ev) {
try {
var data = ev.target.result
var workbook = XLSX.read(data, {
type: 'binary'
}); // 以二进制流方式读取得到整份excel表格对象
persons = [];
} catch (e) {
return;
}
// 表格的表格范围,可用于判断表头是否数量是否正确
var fromTo = '';
// 遍历每张表读取
for (var sheet in workbook.Sheets) {
if (workbook.Sheets.hasOwnProperty(sheet)) {
fromTo = workbook.Sheets[sheet]['!ref'];
if (!fromTo) {
return;
}
persons = XLSX.utils.sheet_to_json(workbook.Sheets[sheet]);
console.log(persons);
var arr=new Array();
arr.push(persons);
document.getElementById("content").innerHTML = formatJson(persons);
//document.getElementById("content").innerHTML = JSON.stringify(arr);
}
}
}
}
}
格式化json数据
function formatJson(msg) {
var rep = "~";
var jsonStr = JSON.stringify(msg, null, rep)
var str = "";
for (var i = 0; i < jsonStr.length; i++) {
var text = jsonStr.charAt(i)
if (i > 1) {
var text = jsonStr.charAt(i - 1)
if (rep != text && rep == text2) {
str += "<br/>"
}
}
str += text;
}
jsonStr = "";
for (var i = 0; i < str.length; i++) {
var text2 = str.charAt(i);
if (rep == text2)
jsonStr += " "
else {
jsonStr += text2;
}
if (i == str.length - 2)
jsonStr += "<br/>"
}
return jsonStr;
}