我正在使用Apache POI生成单元格,但我注意到它似乎将所有单元格设置为相同的值。在这种情况下0.我真的不明白为什么。当我要将工作表保存到文件时,我可以看到单元格有值,但是当查看生成的文件时,它是空的。任何帮助将不胜感激。
当我看到一些单元格有值(例如调试窗口中的“5”)时,这是一个调试屏幕:
以下是我用来生成工作表的代码:
@Override
public void generate(TableRepresentation tableRepresentation) {
int rows = tableRepresentation.getRows();
int columns = tableRepresentation.getColumns();
final HSSFWorkbook workbook = new HSSFWorkbook();
final HSSFSheet sheet = workbook.createSheet();
for (int i = 0; i < rows; i++) {
final HSSFRow row = sheet.createRow(i);
for (int j = 0; j < columns; j++) {
row.createCell(j).setCellValue(tableRepresentation.get(i, j));
}
}
try {
final FileOutputStream fos = new FileOutputStream("tjockis.xls");
workbook.write(fos);
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("tjockis.xls" + " written successfully");
}
public interface TableRepresentation {
int getRows();
int getColumns();
String get(int i, int j);
}
编辑:
以下是导出的工作表的外观:
答案 0 :(得分:0)
如果您将任何变量设为 final ,则无法更改最终变量的值(它将是常量)。
最终变量只能分配一次,其值不会改变,有助于避免编程错误。
分配最终变量后,它始终包含相同的值。如果 final 变量包含对对象的引用,则对象的状态可能会被对象上的操作更改,但该变量将始终引用同一对象。