问题描述
使用导入的excel内容如下:
进入数据库的内容
发现原本用户名为张三,进入数据库后变成了张三 zhang’san
排查问题过程
重现问题
在mac中编辑excel中文后进行excel导入,出现了这个问题,在windows中则没有这个情况。
定位问题
- 首先将导入有问题的excel文件后缀改成zip。
- 解压zip文件,得到文件内容如下:
- 打开里面的shareStrings.xml文件,发现zhang’san包含在文件中,确认是在excel中有包含这个字符串,应该是解析excel的时候把zhang’san这个隐藏的元素也解析进去了。
解决问题
- 通过debug方式,定位到问题是在获取sharedStrings时获取到的多余的拼音
- 查看ReadOnlySharedStringsTable类的源码后发现使用这种方式读取sharedStrings时会读取包括rPh标签的内容,加入到sharedStrings中去
- 换一种获取SharedStringsTable的方式后解决该问题
小结
实际解决问题的过程中并没有那么顺畅,定位问题就花了不少时间,最后才定位到由mac系统编辑excel后才会产生这个问题。定位到问题后正好用到前段时间了解的Excel的底层xml结构的知识,定位到应该是解析sharedStrings的问题,通过debug的方式具体定位到哪一行代码产生的问题,然后再寻找解决方法。这种比较偏的场景问题一般通过百度,谷歌都直接得不到答案,需要沉下心来定位到真正的问题所在,就具体的类或方法去搜索答案。