- 基于
SheetJS/js-xlsx
改造,把excel的二维表格,转化成key->value
形式的json数据,不是xlsx例子中的二维数组json。 - 提供了一套模板,用来转化key为后端能识别的key,同时,对表中的各列字段做了验证
- 前端项目:浏览器需要支持es6,async和await。后端项目:nodejs 8+
支持多sheet验证 example: 以下一张表有2个sheet
[
{
sheetName:'1.用户表',
sheetHeader:{
"名称":{key:"name", type:"String"},
"状态":{key:"status", type:"String"},
"年龄":{key:"age", type:"Number", check: row=>{return age > 18 ? true : '年龄必须大于18岁';}},
"省":{key:"province", type:"String"},
"市":{key:"city", type:"String"},
"区/县":{key:"region", type:"String"},
"地址":{key:"address", type:"String", require:false},
}
},
{
sheetName:'2.角色表',
sheetHeader:{
"角色名称":{key:"company", type:"String"},
}
},
如果只有一个sheet,可以省去sheetName,为:
[
{
sheetHeader:{
"名称":{key:"name", type:"String"},
"状态":{key:"status", type:"String"},
"年龄":{key:"age", type:"Number", check: row=>{return age > 18 ? true : '年龄必须大于18岁';}},
"省":{key:"province", type:"String"},
"市":{key:"city", type:"String"},
"区/县":{key:"region", type:"String"},
"地址":{key:"address", type:"String", require:false},
}
}
]
package.json增加依赖
"dependencies": {
"xlsx-json": "git+https://github.com/thomas-rong/xlsx-json.git"
},
执行npm i
html 代码片段
<input type="file" onChange="upload"/>
excel 表格样例
名称 | 年龄 | 地址 |
---|---|---|
张三 | 18 | 北京 |
李四 | 11 | 浙江杭州 |
js 代码片段
定义验证模板
const templateHeader= [
{
sheetHeader:{
"名称":{key:"name", type:"String"},
"年龄":{key:"age", type:"Number", check: row=>{return age > 17 ? true : '年龄必须不小于18岁';}},
"地址":{key:"address", type:"String", require:false},
}
}
]
定义 加载方法
<script>
const xlsx2json = require('xlsx-json');
const upload = async (event) => {
let data = await xlsx2json.loadByBrowser(event.target.files[0], templateHeader);
console.log(data[0].data);
}
</script>