CSV转XLSX并上传AWS遇问题:csvtoxlsx安装及writeToFile报错
解决CSV转XLSX并上传AWS S3的问题
问题分析
csvtoxlsx包大概率已停止维护或存在依赖兼容问题,导致无法安装和writeToFile报错,直接换用业界常用的xlsx(SheetJS)包即可解决。
步骤实现
替换依赖包
先卸载无效包,安装稳定的xlsx:npm uninstall csvtoxlsx npm install xlsxCSV转XLSX代码
支持从本地CSV文件或内存中的CSV字符串转换:const XLSX = require('xlsx'); const fs = require('fs'); const path = require('path'); // 方式1:从本地CSV文件转换 const csvFilePath = 'path/to/transaction_data.csv'; const workbook = XLSX.readFile(csvFilePath); const xlsxFilePath = path.join(__dirname, 'transaction_data.xlsx'); XLSX.writeFile(workbook, xlsxFilePath); // 方式2:从内存中的csvData字符串转换 // const workbook = XLSX.read(csvData, { type: 'string' }); // XLSX.writeFile(workbook, xlsxFilePath);上传至AWS S3并获取访问链接
先安装AWS SDK(npm install aws-sdk),再执行上传:const AWS = require('aws-sdk'); // 初始化S3客户端(提前通过环境变量/本地凭证文件配置AWS密钥) const s3 = new AWS.S3(); // 读取XLSX文件内容 const fileContent = fs.readFileSync(xlsxFilePath); // 上传参数配置 const uploadParams = { Bucket: 'your-bucket-name', // 替换为你的S3桶名 Key: 'transaction_data.xlsx', // S3中存储的文件名 Body: fileContent, ACL: 'public-read' // 需要公开链接则保留,私有访问可删除 }; // 执行上传并返回链接 s3.upload(uploadParams, (err, data) => { if (err) { console.error('上传失败:', err); return; } console.log('文件访问链接:', data.Location); });
额外说明
- 若不需要公开访问,删除
ACL: 'public-read'后,可生成预签名临时链接:const presignedUrl = s3.getSignedUrl('getObject', { Bucket: 'your-bucket-name', Key: 'transaction_data.xlsx', Expires: 3600 // 链接有效期(秒) }); console.log('临时访问链接:', presignedUrl); - AWS凭证优先通过环境变量
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY配置,或使用IAM角色(AWS服务内运行时)。
内容的提问来源于stack exchange,提问作者Aysha Sinara
相关产品推荐
相关产品推荐

