Angular2中使用xlsx导出CSV文件遇问题求助
使用xlsx模块导出JSON为CSV文件的正确实现
我来帮你搞定这个问题!你用xlsx模块导出CSV的思路是完全正确的,只是代码里有几个小语法问题和变量误用导致无法运行,咱们一步步修正:
先梳理你代码里的问题
- 你引用了
buffer变量但从未定义过,实际上你已经通过XLSX.utils.sheet_to_csv生成了CSV字符串csvOutput,直接用它就好 FileSaver.saveAs的参数里,Blob的括号闭合错误,多写了一个分号
修正后的完整可运行代码
import * as XLSX from 'xlsx'; import FileSaver from 'file-saver'; // 示例JSON数据(替换成你的实际数据) const json = [ { name: '张三', age: 25, city: '北京' }, { name: '李四', age: 30, city: '上海' } ]; const CSV_TYPE = 'text/csv;charset=utf-8'; const CSV_EXTENSION = '.csv'; const fileName = 'data'; // 替换成你的文件名前缀 // 1. 将JSON转换为工作表对象 const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json); // 2. 将工作表转换为CSV格式字符串 const csvOutput: string = XLSX.utils.sheet_to_csv(worksheet); // 3. 包装成Blob并触发下载(添加BOM头解决Excel中文乱码) const csvBlob = new Blob(['\ufeff' + csvOutput], { type: CSV_TYPE }); FileSaver.saveAs( csvBlob, `${fileName}_export_${new Date().getTime()}${CSV_EXTENSION}` );
额外实用说明
- 加入
'\ufeff'(UTF-8 BOM头)是为了避免Excel打开CSV时出现中文乱码,纯英文数据可以省略这部分 - 确保已安装依赖:
npm install xlsx file-saver,TypeScript项目还需安装类型定义:npm install @types/xlsx @types/file-saver --save-dev - 如果你不想用
FileSaver,也可以用原生浏览器API实现下载:
const url = URL.createObjectURL(csvBlob); const downloadLink = document.createElement('a'); downloadLink.href = url; downloadLink.download = `${fileName}_export_${new Date().getTime()}${CSV_EXTENSION}`; document.body.appendChild(downloadLink); downloadLink.click(); document.body.removeChild(downloadLink); URL.revokeObjectURL(url);
内容的提问来源于stack exchange,提问作者user
相关产品推荐
相关产品推荐

