cell.getContents()不能取得字段内容。
使用JXL.jar,读取cell内容时为空。字段类型如果为date,或者Lable(有中文)可以读取。
Lable(数字、字母、字符)读取结果为空。
环境体现
| 主干开发 | release | 生产 | release使用主干代码
-----------|----------|----------|-------|-------------
下载的文件 | Y | Y | o | Y
-----------|----------|----------|-------|------------
手写或修 | N | Y | N | Y
改文件 | | | |
注:o为未测试
代码无问题,2年没有改过,jar包为公用1年没有改过,之前一直好用,突然出现问题。怀疑环境编码或文件编码问题,但没有找到解决办法。
尝试用release上的jxl.jar替换主干上该jar包,主干开发环境可以正常读取了。 但是两个jar经过比对无任何不同之处。
第二天,tian同学另一模块同样问题。将jar替换到生产上无法解决问题。
将暂时认为有问题原主干开发jar回复,问题重现。
应用服务器(Weblogic)Locale为zh_CN,修改为en_US,可以正常读取。主干测试OAS,为en_US无法读取,修改为zh_CN可以读取。
EXCEL为微软格式编码,不存在utf-8,gbk编码不对的问题。但是应用的Locale表现又不一样。彻底晕菜。
tian同志发现一个办法,手工设置excel的编码后就没问题了:
WorkbookSettings setting = new WorkbookSettings();
java.util.Locale locale = new java.util.Locale("zh", "CN");
setting.setLocale(locale);
setting.setEncoding("ISO-8859-1");
book = Workbook.getWorkbook(zipFile.getInputStream(zipEntry),setting);
试用果然好使。
无法完全解释该问题,但估计与Locale相关,或者上传过程中产生的了问题。上传使用的最原始的<input type='file'>
如有人找到具体原因,请赐教。