我正在使用JExcel库来阅读excel电子表格。电子表格中的每个单元格都可以包含44种语言(英语,葡萄牙语,法语,中文等)中的任何一种本地化字符串。今天我不告诉API有关它应该使用的编码的任何信息。它处理中国好,但它总是搞乱葡萄牙和德国。不知何故,默认编码(我的开发盒上的MacRoman,生产中的UTF-8)无法正确解释它从excel工作簿中拉出的字符串。 JExcel如何解释文件的字符编码会有问题。
有人说......
excel工作簿中的所有字符串是否都使用相同的字符集进行编码?
是否有工作簿元数据我可以问这个字符集是什么(我还没找到)?
如果我通过像jchardet(http://jchardet.sourceforge.net/)之类的东西运行所有单元格,是否可能能够为整个工作簿划分字符编码(这几乎取决于第一个问题是“是的,给定工作簿中的所有行为都使用相同的字符集进行编码”)?
这么多问题,时间很少。
答案 0 :(得分:10)
嗯,我没有直接得到答案,但马特发现的一个规范指出了实际答案:http://sc.openoffice.org/excelfileformat.pdf
与此同时,只需将编码设置为“Cp1252”,我的问题就消失了。我不确定为什么,但我不是在寻找一匹礼物马,可以这么说,并且正在继续前进。
WorkbookSettings workbookSettings = new WorkbookSettings();
workbookSettings.setEncoding( "Cp1252" );
Workbook.getWorkbook( theFile, workbookSettings );
我会称这个人回答。
答案 1 :(得分:0)
我遇到的问题是,在从excel文件中读取单元格值时,某些值显示为“?”因为这对应于带重音的字母......那个代码会解决这个问题吗?因为当我在Windows下运行时,我无法像在Linux下那样快速测试(这是我正在部署的服务器的SO)...