导出到excel文件中,从excel中复制出来<0x01>已经变成了?号字符。导出到csv文件就不会,现在是导出到excel,这个<0x01>字符丢失了
Q
[alibaba/easyexcel]导出到excel中 丢失
6
A
回答
7
测试了一下没有复现这个问题,给个 demo 看看?
8
测试了一下没有复现这个问题,给个 demo 看看?
格式丢失了 @juzi214032
6
@zhongliangjian 这里写入 \u0001
的作用是什么?这个预期在excel显示什么?是这个编码字符还是要显示 \u0001
7
\u0001
是一个特殊unicode字符,Excel 显示不出来的,建议把这种不可见字符过滤掉,csv能显示是因为csv是纯文本数据,编辑器支持就可以识别
5
这个是通过加密算法出来的字符,不能过滤,excel显示不出来不要紧,主要是格式不能丢失,导出到excel中,然后复制到编辑器,这个字符不能丢失掉,我昨天试了一下,用原生poi xls格式是可以导出到excel的,虽然还是显示问号,但是复制出来格式不会丢失,但是导出到新版本的xlsx格式就会丢失,但是xls数据量太小了,满足不了需求 @juzi214032
2
根本原因是xls和xlsx的底层编码格式不同:
xlsx格式的基础是xml,小于32以下的字符只有3个是xml可用的,分别是9,10和13(Tab,回车+换行),如果出现其它不可见字符那么将会使整个文件无法打开,打开xml文件时大致会提示xmlParseCharRef: invalid xmlChar value 1
,为了不破坏整个文件POI将不可见字符输入为【?】问号
xls格式可以输出是因为xls是BIFF编码的一种纯二进制文件,BIFF字符串为ASCII或UTF16-LT 编码,所以不存在不可见字符的问题
最好的处理方式是将加密后的数据进行一次base64即可,并且几乎所有的加解密都需要一次base64处理
5
最新版本应该能解决这个问题 3.3.2