nodejs实现导出、下载功能

本文介绍如何使用Node.js中的node-xlsx模块将数据库数据导出为固定格式的Excel文件,并通过Express框架提供文件下载功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

财务类客户会经常需要将数据库中的数据以excel的形式导出,在此我选用 node-xlsx 模块,用于导出一份固定格式的excel,然后用express中的res.download方法,为前端提供文件下载。

#语法糖为coffeeScript
fs = require("fs")
xlsx = require("node-xlsx")
uuid = require("node-uuid")

exports.exportFile = (req,res)->
    data = [[1,2,3],['a','b','c']]
    buffer = xlsx.build([{name:'test',data:data}])
    filePath = __dirname + '/download/' + uuid.v1() + '.xlsx'
    #创建对应文件
    fs.writeFileSync(filePath,buffer,'binary')
    res.download(filePath)

如果只有少量文件可以不用将创建的文件删除(可以作为备份记录),如果文件量大且没有备份的意义,那么就需要在客户端下载完成后将对应的文件删除

Node.js配合Vue3实现Excel导出通常需要借助一些前端库(如`xlsx`或`js-xlsx`)和后端支持(比如`file-type`等)。以下是实现的基本步骤: **前端部分(Vue组件):** 1. **安装依赖**: ```sh npm install axios xlsx // 或者 vue3-plugin-excel-export ``` 2. 创建一个函数来生成Excel数据: ```javascript import XLSX from 'xlsx'; export function generateExcel(data) { const workbook = { SheetNames: ['Sheet1'], Sheets: {} }; workbook.Sheets['Sheet1'] = data; return XLSX.write(workbook, { type: 'buffer' }); } ``` 3. 使用axios将Excel数据发送到后端: ```javascript exportExcel() { let excelBuffer = generateExcel(yourData); // 你的数据应转换成适合作为工作表的数据结构 axios.post('/api/export', { file: excelBuffer }, { responseType: 'arraybuffer' }) .then(response => { // 处理返回的结果,例如下载文件或提示用户保存 }) .catch(err => { console.error('Export failed:', err); }); } ``` **后端部分(Node.js API):** 1. 安装必要的模块: ```sh npm install file-type multer ``` 2. 设置一个Express路由接收POST请求并处理文件: ```javascript const express = require('express'); const multer = require('multer'); const fs = require('fs'); const app = express(); const upload = multer({ dest: 'uploads/' }); app.post('/api/export', upload.single('file'), (req, res) => { if (!req.file) { return res.status(400).send('No file uploaded.'); } // 将二进制数据写入临时文件,然后可以将其转换为持久化的文件 fs.writeFile('exported.xlsx', req.file.buffer, (err) => { if (err) { res.status(500).send('Failed to save file: ' + err.message); } else { res.download('exported.xlsx', 'exported_file.xlsx'); // 返回给客户端下载 } }); }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值