Blob对象下载CSV文件

    用blob对象下载CSV文件的时,分列的方法是采用‘,’进行分割,但是字符串中存在逗号的时候就会出现错乱现象。解决这个方法的精髓就是转义字符,将字符串用转义的引号包裹起来,在解析的时候读到引号里面的逗号就不会分列。

第一个例子:直接拼接字符串


直接将两个字符串拼凑起来,中间用逗号分隔,字符串中不包含逗号,这是基本情况,这样做是没有问题的,下载的结果也是正确的,下载的结果如图:


第二个例子:字符串中包含逗号

如果字符串中包含逗号,直接进行进行字符拼接会出现什么情况呢,给例1中的数据中增加逗号,拼接后的字符串为

str_csv = "test,Str1"  + ","  + "testS,tr2" ,最终的到的结果如下


可见如果字符串中包含逗号的话,直接用拼接字符串的方法是行不通的,正确的做法在例三中介绍

第三个例子:转义的引号包裹原始数据

采用转义后的引号包裹原始数据,原始数据中的逗号就不会被blob对象解析,下载的CSV文件分列就会正常

将字符串拼接成 str_csv = '\"' + "test,Str1" + '\"' + "," + '\"' + "testS,tr2" +'\"',结果就是我们想要的


可见,最终单元格的字符串中是包含逗号的,但是没有分列说明转义字符生效了。

当然,还可以采用改变分隔符的方法解决这个问题,但缺点是仍然不能避免原始数据中包含分隔字符串的尴尬。

如果我们还需要用引号将原始数据包裹,该怎么拼接字符串呢,所有的转义字符都用'\"'的话 ,显然是不合理的,两个相同的转义引号放一起就像是直接写了一个“”,字符还是会暴露在外面。可以采用不同的引号区包裹,就会用到'\"\"'。将'\"\"'视为双引号,将'\"'视为单引号,看到这里,你一定会用了吧。来看最后一个例子

第四个例子:引号包裹的原始数据

拼接的字符串:str_csv = '\"' + '\"\"' + "test,Str1" + '\"\"' + '\"' + "," + '\"' + "testS,tr2" +'\"'

最终的结果:


实现了预期的结果

注意一下,默认的blob下载不支持中文,如果原始数据中包含中文字符,创建的CSV文件会乱码。解决这个问题只需要为CSV文件创建一个bom头;具体的操作也很简单,就是在字符串的开头添加字符'\uFEFF',例如:

str_csv = '\uFEFF' + '\"' + '\"\"' + "test,Str1" + '\"\"' + '\"' + "," + '\"' + "中国" +'\"'

就会很完美的解决这个问题。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值