Apache Poi - 将外来字符写入Excel 97/2003(即中文,日文等)

时间:2013-09-09 14:49:43

标签: java unicode apache-poi

我正在尝试将一些外来字符写入Excel 97/2003文件(即中文,日文,韩文等)并遇到问题。我已经尝试了很多,似乎没有任何工作。可能吗?我写这个单元的代码如下。

HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Sample sheet");
...

HSSFRow row = sheet.createRow(0);
HSSFCell firstCell = row.createCell((short)0);
HSSFFont theFont = workbook.createFont();                                      
theFont.setFontName("Arial Unicode MS");                                               
HSSFCellStyle style =  workbook.createCellStyle();                                 
style.setFont(theFont);
firstCell.setCellStyle(style);                      
firstCell.setCellValue(firstColVal);

1 个答案:

答案 0 :(得分:0)

POI支持Excel中的Unicode字符至少5年,可能更长! (我记不清楚了)。几乎所有有POI和Unicode问题的人最终都会使用POI的版本,这些版本稍微早于发现火和轮子......(我只是半开玩笑!)

首先,确保您使用的是最新版本的Apache POI。截至2013年9月,我建议您尝试POI 3.10 beta 2,这是最新版本。您始终可以在POI download page上找到最新版本。其次,确保您实际使用的是您想要的POI版本。很多人忘记从类路径中删除旧副本,并最终仍然使用以前的版本,因为如果有两个具有相同库的Java,Java将倾向于选择它遇到的第一个jar。请参阅this POI FAQ entry了解如何检查你实际使用的版本。

最后,只需在文件中设置unicode字符串即可。如果您使用的是非标准字体,请确保支持您使用的代码点,但这与Excel本身没有区别!

POI有许多单元测试,可自动验证它是否正确处理unicode文本,如果您想重新确认自己正常工作,请查看TestUnicodeWorkbookTextHSSFHeaderFooter等内容。