node.js 导出Csv文件

注:.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文件默认是以逗号','分隔的,因为拼接字符串分隔应该使用逗号来分隔。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在 Node.js 和 Express 中导出 CSV 文件,你需要使用一个名为 `csv-writer` 的第三方模块。可以通过以下命令来安装: ``` npm install csv-writer ``` 接下来,你需要在你的 Node.js 代码中导入 `csv-writer` 模块,并创建一个 CSV 写入器对象。以下是一个简单的示例代码: ```javascript const createCsvWriter = require('csv-writer').createObjectCsvWriter; const csvWriter = createCsvWriter({ path: 'output.csv', header: [ { id: 'name', title: 'Name' }, { id: 'age', title: 'Age' }, { id: 'gender', title: 'Gender' }, ] }); const data = [ { name: 'John', age: 30, gender: 'Male' }, { name: 'Jane', age: 25, gender: 'Female' }, { name: 'Bob', age: 40, gender: 'Male' }, ]; csvWriter.writeRecords(data) .then(() => console.log('The CSV file was written successfully')); ``` 在上面的代码中,我们首先使用 `createCsvWriter()` 函数创建了一个 CSV 写入器对象。该函数的参数包括一个文件路径和一个表头数组,表头数组中包含了每一列的标题和 ID。 接下来,我们创建了一个数据数组,它包含了要写入 CSV 文件的数据。 最后,我们使用 `writeRecords()` 方法将数据写入 CSV 文件中。在该方法的回调函数中,我们可以输出一条消息来告诉用户 CSV 文件已经成功地写入了。 在这个示例代码中,我们将 CSV 文件写入磁盘上的 `output.csv` 文件中。如果你想将 CSV 文件发送给用户进行下载,你可以使用 Express 的 `res.attachment()` 和 `res.sendFile()` 方法来实现。以下是一个示例代码: ```javascript app.get('/export-csv', (req, res) => { const createCsvWriter = require('csv-writer').createObjectCsvWriter; const csvWriter = createCsvWriter({ path: 'output.csv', header: [ { id: 'name', title: 'Name' }, { id: 'age', title: 'Age' }, { id: 'gender', title: 'Gender' }, ] }); const data = [ { name: 'John', age: 30, gender: 'Male' }, { name: 'Jane', age: 25, gender: 'Female' }, { name: 'Bob', age: 40, gender: 'Male' }, ]; csvWriter.writeRecords(data) .then(() => { res.attachment('output.csv'); res.sendFile(__dirname + '/output.csv'); }); }); ``` 在上面的代码中,我们创建了一个路由处理程序来响应用户的请求。在该处理程序中,我们使用 `csv-writer` 模块将数据写入 CSV 文件中,并通过 `res.attachment()` 方法告诉浏览器将该文件作为附件进行下载。最后,我们使用 `res.sendFile()` 方法将该文件发送给用户。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值