[alibaba/easyexcel]导出到excel中 丢失

2024-05-09 422 views
6

导出到excel文件中,从excel中复制出来<0x01>已经变成了?号字符。导出到csv文件就不会,现在是导出到excel,这个<0x01>字符丢失了 image

回答

7

测试了一下没有复现这个问题,给个 demo 看看?

8

测试了一下没有复现这个问题,给个 demo 看看? image

image

格式丢失了 @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