第一种导入
<div class="layui-form-block">
<input type="file" class="layui-btn layui-btn-primary" id="LAY-excel-import-excel" multiple="multiple">
</div>
$(function () {
// 监听上传文件的事件
$('#LAY-excel-import-excel').change(function (e) {
// 注意:这里直接引用 e.target.files 会导致 FileList 对象在读取之前变化,导致无法弹出文件
var files = Object.values(e.target.files)
uploadExcel(files)
// 变更完清空,否则选择同一个文件不触发此事件
e.target.value = ''
})
})
})
第二种导入
<button type="button" class="layui-btn" id="LAY-excel-upload">
<i class="layui-icon"></i>导入
</button><input class="layui-upload-file" type="file" accept="undefined" name="file">
//upload上传实例
var uploadInst = upload.render({
elem: '#LAY-excel-upload' //绑定元素
, url: '/upload/' //上传接口(PS:这里不用传递整个 excel)
, auto: false //选择文件后不自动上传
, accept: 'file'
, choose: function (obj) {// 选择文件回调
var files = obj.pushFile()
var fileArr = Object.values(files)// 注意这里的数据需要是数组,所以需要转换一下
// 用完就清理掉,避免多次选中相同文件时出现问题
for (var index in files) {
if (files.hasOwnProperty(index)) {
delete files[index]
}
}
$('#LAY-excel-upload').next().val('');
uploadExcel(fileArr) // 如果只需要最新选择的文件,可以这样写: uploadExcel([files.pop()])
}
});
/**
* 上传excel的处理函数,传入文件对象数组
*/
function uploadExcel(files) {
layui.use(['excel', 'layer'], function () {
var excel = layui.excel
var layer = layui.layer
try {
excel.importExcel(files, {
// 读取数据的同时梳理数据
fields: {
'id': 'A'
, 'username': 'B'
, 'experience': 'C'
, 'sex': 'D'
, 'score': 'E'
, 'city': 'F'
, 'classify': 'G'
, 'wealth': 'H'
, 'sign': 'I'
}
}, function (data) {
// 还可以再进行数据梳理
})
} catch (e) {
layer.alert(e.message)
}
})
}
参考案例http://excel.wj2015.com/
参考文档http://excel.wj2015.com/_book/