java生成csv文件_使用Express JS生成和下载CSV文件

1296f244a3c9c11e58edbf17c47f7be3.png

相关阅读:在JavaScript应用中将CSV转换为JSON

在做一个Node JS项目的时候,我需要从数据库中提取某些数据,并在CSV文件中表示数值,本指南旨在简化创建CSV文件的过程,并使其可以从客户端下载。

先决条件

  • 使用Express JS的知识。
  • 一个工作的数据库设置。

在本教程中,我会使用PostgreSQL与Sequelize ORM(数据库/ORM类型其实并不重要),json2Csv npm包是我解析JSON到CSV数据的首选包,因为它简单易用。其他可以使用的npm软件包是 fast-csvcsv-parse

目标

使用API端点 /download 将用户数据(名、姓、电子邮件)下载为CSV文件。

步骤

  • 实用函数
  • 使用控制器中的帮助函数

/ 实用函数 /

使用 yarn add json2csv npm i json2csv 安装包,安装完成后,我们将使用 json2Csv 给出的解析器同步API。

utils

import { Parser } from 'json2csv';export const downloadResource = (res, fileName, fields, data) => {  const json2csv = new Parser({ fields });  const csv = json2csv.parse(data);  res.header('Content-Type', 'text/csv');  res.attachment(fileName);  return res.send(csv);}

downloadResource函数参数

  • res。这是来自API端点的响应。
  • filename。用于下载生成的CSV文件的名称。
  • fields。这是一个对象数组,它有很多功能,包括指定从发送的数据中解析出哪些值,给每一列提供一个自定义的头等。
  • data。这是一个对象数组,表示要在CSV文件中填充的数据,注意:这与指定的字段匹配。

在实用函数中,将头 Content-type 设置为 text/csv,使客户端能够识别发送的是什么类型的数据以及如何处理,将 attachment 设置为选择的文件名,最后使用 res.send 将解析后的CSV数据作为参数返回响应。我们已经准备好使用实用程序函数。

/ 使用控制器中的帮助函数 /

创建新的下载路由

route.js

import express from 'express';import userController from './controllers/userController';const router = express.Router();router.get('/download', userController.download);// rest of express configs

创建新的控制器下载方法

userController.js

import { users } from '../models';import { downloadResource } from '../util';const controller = {};controller.download = async (req, res) => {  const fields = [    {      label: 'First Name',      value: 'first_name'    },    {      label: 'Last Name',      value: 'last_name'    },    {      label: 'Email Address',      value: 'email_address'    }  ];  const data = await users.findAll();  return downloadResource(res, 'users.csv', fields, data);}export default controller;

/ 测试 /

运行您的本地服务器并在客户端浏览器中打开链接,并提供下载端点的路径(例如http://localhost:3000/api/download),然后您的文件就会使用本地下载管理器下载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值