相同的Apache poi(excel)代码根据系统类型(32位,64位)采取不同的行为

时间:2015-11-18 21:14:50

标签: java apache-poi

我已经使用apache poi 3.10成功生成了一个excel文件,该程序只能在32位系统上按预期运行。

但是当试图在64位系统上运行它时,大多数单元数据都被遗漏了,它们根本就没有出现(但是相同的代码在32位系统上运行得很好)。 我能做些什么,所有生成的细胞数据甚至可以在64位系统上显示?

HSSFWorkbook my_xls_workbook = new HSSFWorkbook(input_document);
HSSFSheet my_worksheet = my_xls_workbook.getSheetAt(0);

Cell cell = null;
cell = my_worksheet.getRow(0).getCell(10);
cell.setCellValue(nme.getText());                              
cell = my_worksheet.getRow(3).getCell(6);
cell.setCellValue(frm.getText);
cell = my_worksheet.getRow(4).getCell(3);
cell.setCellValue(empid);

//Closing InputStream
input_document.close();

FileOutputStream output_file =new FileOutputStream(new File("C:PayslipG.xls"));

//write data
my_xls_workbook.write(output_file);
//closing stream
output_file.close();

谢谢!

1 个答案:

答案 0 :(得分:0)

向答案提出一些意见 - Java应该是平台和架构无关的。除非您正在执行特定于平台的代码,例如AWT或Swing,否则运行时平台之间不应存在任何差异

然而,机器之间可能有所不同的一点是类路径。确保两台机器上的代码和相同的罐子确实相同!

一个可悲的常见问题是运行时,框架等在不告诉您的情况下默默地捆绑过期的Apache POI副本。如果你make use of the code included in the Apache POI FAQ Entry,你可以检查你在运行时真正使用的POI罐。

根据评论,这些罐子不是您认为正在使用的罐子。根据{{​​3}},不支持在版本之间混合POI jar。删除已识别的旧POI jar,因此您只使用最新的,并且您的代码将正常运行