近期项目中需要数据导出功能,之前的项目使用过exceljs,觉得挺不错。
就将之前写过的代码抽取出来,封装成通用接口。
然后在electron端主进程编写好调用程序,给前端调用时,前端反映下载打开的csv文件是乱码。
What???
我本地测试过没有呢,马上跑去他的机子去看下究竟,原来他用的MS office,还真有问题(我是用wps,显示正常)。
主要的文件编码方式有:ANSI、UTF-8、UTF-8无BOM、UCS、UCS-2 Big/Little Endian、Unicode
查看https://github.com/exceljs/exceljs,Writing CSV方法,其有8个参数,我初时以为encoding设置不对,但是看了源码才知道,它只有这几种( “utf8” | “ascii” | “utf-8” | “utf16le” | “ucs2” | “ucs-2” | “base64” | “base64url” | “latin1” | “binary” | “hex”)类型,默认是utf-8格式,试了utf8不行,怎么办呢?
后来在formatterOptions旁边打开的链接https://www.c2fo.io/fast-csv/docs/formatting/options/中发现
writeBOM
Type: boolean Default: false
Set to true if you want the first character written to the stream to be a utf-8 BOM character.
原来想设置UTF-8无BOM格式需要将此设置为true。
运行生成的csv文件终于在MS office中打开不是乱码了。