代码语言:javascript复制
// 导入excel
router.get('/uploadExcel', function (req, res) {
let data = [
{
name: '第一个sheet',
data: [['字段1', '字段2', '字段3'], ['1', 'Michael', '99'], ['2', 'Tom', '98']]
},
{
name: '第二个sheet',
data: [['A1', 'B1'], ['A2', 'B2']]
}
]
// 将格式化的数据写如excel文件
let buffer = xlsx.build(data)
fs.writeFile('./resut.xls', buffer, function (err) {
if (err) {
console.log(err, '保存excel出错')
} else {
console.log('写入excel成功!!!')
// 读取excel
var obj = xlsx.parse('./' 'resut.xls')
console.log('读取excel成功' JSON.stringify(obj))
// 下载excel表
res.setHeader('Content-Type', 'application/vnd.openxmlformats')
res.setHeader('Content-Disposition', 'attachment; filename=' 'export.xlsx')
res.end(buffer, 'binary')
}
})
})
使用
代码语言:javascript复制node-xlsx 包的介绍点击此处 包进行excel的导入导出解析 支出
- xlsx
- xls
主要用到这个包的二个api:
xlsx.build():将格式化的数据转化为可保存excel的buffer流,参数为一个数组
xlsx.parse(): 将一个excel中的数据转化为数组
使用
代码语言:javascript复制res.setHeader('Content-Type', 'application/vnd.openxmlformats')
res.setHeader('Content-Disposition', 'attachment; filename=' 'export.xlsx')
res.end(buffer, 'binary')
这三行代码是设置接口response的header 访问接口直接下载一个叫做export的excel文件
总体上node导入导出excel还是比较简单的,麻烦的在于数据的封装,以及一列一列的解析,判断,要知道用户在excel有可能填写了很多不规范的数据,这就需要我们的程序做很多的检查.规范人们的excel的导入模板