4

我正在使用 JExcel 库来阅读 excel 电子表格。电子表格上的每个单元格都可能包含 44 种语言(英语、葡萄牙语、法语、中文等)中的任何一种的本地化字符串。今天我没有告诉 API 任何关于它应该使用的编码的信息。它处理中文还可以,但它总是搞砸葡萄牙语和德语。不知何故,默认编码(我的开发盒上的 MacRoman,生产上的 UTF-8)无法正确解释它从 excel 工作簿中提取的字符串。JExcel 解释文件字符编码的方式一定有问题。

话虽如此...

excel工作簿中的所有字符串是否都使用相同的字符集进行编码?

是否有工作簿元数据我可以问这个字符集是什么(我还没有找到)?

如果我通过 jchardet (http://jchardet.sourceforge.net/) 之类的东西运行所有单元格,是否能够预测整个工作簿的字符编码(这几乎取决于第一个问题是“是的,给定工作簿中的所有字符串都使用相同的字符集进行编码”)?

这么多问题,这么少时间。

4

2 回答 2

10

好吧,我没有直接得到答案,但马特对规范的发现为实际答案指明了方向:http: //sc.openoffice.org/excelfileformat.pdf

同时,只需将编码设置为“Cp1252”,我的问题就消失了。我不确定究竟是为什么,但可以这么说,我并不是在寻找礼物马,并且正在继续前进。

    WorkbookSettings workbookSettings = new WorkbookSettings();
    workbookSettings.setEncoding( "Cp1252" );
    Workbook.getWorkbook( theFile, workbookSettings );

我会打电话给这个回答。

于 2011-09-17T01:05:52.547 回答
1

我的问题是,在从 excel 文件中读取单元格值时,一些值出现了“?” 因为这对应于带重音的字母......该代码会解决这个问题吗?因为当我在 Windows 下运行时,我无法像在 Linux 下那样快速测试(这是我要部署到的服务器的 SO)......

于 2013-06-19T14:34:25.780 回答