以Blob的格式来嵌入a标签来实现导出csv文件,并处理分隔符问题导致内容展示错乱的问题
实现:
以blob的格式来嵌入a标签,而各个元素之间的,则以‘,’还有’\n’来隔开。(因为CSV文件默认以英文逗号做为列分隔符,换行符作为行分隔符)。
如果不提供网页形式只用命令行或二进制程序输出数据到CSV,只需要将数据段按,分割,行按\n分割,写入到一个.csv文件即可。
但有时字段里含有,和换行符就麻烦了,数据输出会出现混乱。这时可以使用双引号"来将每个字段内容括起来,CSV默认认为由""括起来的内容是一个栏位, 这时不管栏位内容里有除"之外字符的任何字符都可以按原来形式引用。
例如:
"姓,名"如果不加双引号,那么姓和名会被分隔到两个单元格中展示,那么要想是在一个单元格内展示的话,直接写""或者用转义\"
const str = '姓,名';
const newStr = `"${
str}",`;
唯一需要注意的 就是若字段内容里含有"怎么办。这时只需将"替换成两个双引号(“”)即可。CSV会将字段里的两个双引号""显示成一个。
例如:
const str = '111,"222","333",444';
// 用str.replace(/"/g, '""')来将str中所有的双引号替换成两个双引号
const newStr = `"${
str.replace(/"/g, '""')}",`;
具体代码如下:
// 封装一个导出函数来复用,只用传表头、内容、文件名(不含后缀名)
export const handleExportFile = (header: string[]