注:.csv文件默认是以逗号分隔的,因此内容采用逗号连接。
导出所有符合条件的列表,通过写接口导出
const iconv = require('iconv-lite') //中文转码
async function exportExcle(ctx, next) {
const { date, type, green } = ctx.request.query
const sql = green_info('tbl_curve_pv')
let dataList, content=''
let fileName= "pv"+new Date().valueOf()
sql.where('date', date).where('type', type)
if ( green !== '全部' ) {
sql.where('green', green)
}
dataList = await sql.select('*').orderBy('pv', 'desc')
ctx.response.set({
'Content-Type': 'application/vnd.ms-execl',
'Content-Disposition': 'attachment;filename='+ fileName +'.csv',
'Pragma':'no-cache',
'Expires': 0
})
content = '项目名称,绿皮ID,奥特曼ID,绿皮来源,访问次数\n'
content+= dataList.map((item, index) => {
return item.projectname +','+ item.greenid +','+ item.ultramanid +','+ item.green +','+ item.pv +'\n'
}).join('')
let buffer = new Buffer(content)
//需要转换字符集
let str=iconv.encode(buffer,'gbk')
ctx.response.body = str
}
module.exports = {
exportExcle
}
导出Csv文件默认是以逗号','分隔的,因为拼接字符串分隔应该使用逗号来分隔。