示范excel的demo
网络异常,图片无法展示
|
先导入node-xlsx
npm install node-xlsx const xlsx = require("node-xlsx") 复制代码
读取excel的数据并进行数据转化
router.get("/commit", async (ctx, next) => { const m = xlsx.parse('./commit/2.xlsx') let table = new Array() m.forEach(item => { for(let i = 1; i < item['data'].length; i++) { let arr = new Array() for(let o = 9; o < item['data'][i].length; o++) { const t = item['data'][i][o] ? item['data'][i][o] + '--' : item['data'][i][o] arr.push(t) } table[i - 1] = { "dishes": item['data'][i][0], "introduce": item['data'][i][1], "ingredients": item['data'][i][2], "label": item['data'][i][3], "tips": item['data'][i][4], "hor": item['data'][i][5], "way": item['data'][i][6], "time": item['data'][i][7], "flavor": item['data'][i][8], "steps": arr } } }) ctx.body = util.success(null, "新增成功") }) 复制代码
网络异常,图片无法展示
|
目前这部分steps存入数据库,是用'--,'这种符号去隔开,到时候查出来,组成数组,供前端使用
数据转化并存入mysql
router.get("/commit", async (ctx, next) => { const m = xlsx.parse('./commit/2.xlsx') m.forEach(item => { for(let i = 1; i < item['data'].length; i++) { let arr = new Array() for(let o = 9; o < item['data'][i].length; o++) { const t = item['data'][i][o] ? item['data'][i][o] + '--' : item['data'][i][o] arr.push(t) } // 写入mysql const sql = ` insert into daemon_food (dishes, introduce, ingredients, label, tips, hor, way, time, flavor, steps) values ("${ item['data'][i][0] ?? null }", "${ item['data'][i][1] ?? null }", "${ item['data'][i][2] ?? null }", "${ item['data'][i][3] ?? null }", "${ item['data'][i][4] ?? null }", "${ item['data'][i][5] ?? null }", "${ item['data'][i][6] ?? null }", "${ item['data'][i][7] ?? null }", "${ item['data'][i][8] ?? null }", "${ arr ?? null }") ` query(sql) } }) ctx.body = util.success("", "新增成功") }) 复制代码
本次数据一共14万多的数据,循环导入,跑了差不多3分钟,自己研究的写法,如果有好的办法,烦请大佬教教我。