在使用小程序云作为项目开发的后台环境时,经常会遇到将客户提供的excel表格数据导入到云数据库的需求。因为小程序云数据库的导入文件格式暂时只支持csv和json两种格式,所以我们需要现在自己的电脑上将excel文件处理呈json文件,再导入到小程序云数据库。
安装Excel读写模块node-xlsx
npm install --save node-xlsx
读取excel文件,转换成小程序云所用的json格式并
新建excel2json.js
const xlsx = require('node-xlsx')
const fs = require('fs')
// 读取excel文件
const list = xlsx.parse(__dirname + '/../excel/name.xls')
// list:
// [
// {
// name: 'firstSheet',
// data: [
// ['姓名','年龄','性别'],
// ['张三','20','男'],
// ['小红','18','女']
// ]
// },
// {
// name: 'secondSheet',
// data: [
// [Array], [Array]
// ]
// }
// ]
// 转成小程序云所用的json
let data = list[0].data
let keys = data[0]
let str = ''
for (let i = data.length - 1; i--;) {
// 必须使用 \n 换行区别每个记录,不能用逗号
let item = {}
// 使用excel表格的第一行作为keys
for(let j = keys.length; j--;){
item[keys[j]] = data[i][j]
}
str += JSON.stringify(item) + "\n"
}
// 保存到本地
fs.writeFileSync(__dirname + "/../json/name.json", str)
执行excel2json.js
node excel2json.js
要注意小程序所导入的json
格式不是标准的json
格式,而是一行一行的json字符串。所以得到的name.json
格式如下:
{ "姓名": "张三", "年龄": "20", "性别": "男" }
{ "姓名": "小红", "年龄": "18", "性别": "女" }
该方法同时支持转化.xls
和.xlsx
两种格式的excel
文件