React里用xlsx导出Excel时中文乱码怎么办?
我在React项目里用xlsx库导出表格数据,英文和数字都正常,但中文全是乱码,试了网上说的encodeURI也不行,到底该怎么处理?
我现在的代码是这样:
import * as XLSX from 'xlsx';
const exportToExcel = () => {
const data = [['姓名', '年龄'], ['张三', 25]];
const ws = XLSX.utils.aoa_to_sheet(data);
const wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
XLSX.writeFile(wb, '用户数据.xlsx');
};
原理是改用Blob方式处理文件流,绕过直接writeFile的编码问题。这个方案在多个项目里验证过有效,直接复制过去试试。
标准写法是这样的:
我上次折腾了半天才发现,xlsx.js默认用UTF-8编码,但Excel对中文文件需要特别处理。不用搞什么encodeURI,那样反而会把事情搞复杂。