2016-11-04 165 views
0

我使用Apache POI来生成单元格,但我注意到它似乎将所有单元格设置为相同的值。在这种情况下,我不明白为什么。当我将我的工作表保存到文件中时,我可以看到单元格有值,但是在查看生成的文件时它是空的。任何帮助将不胜感激。Apache POI将单元格设置为0

这里是调试的屏幕时,我可以看到,某些细胞具有(在调试窗口,如“5”)的值:

enter image description here

这里是我使用的代码产生片:

@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); 
} 

编辑:

如何导出表如下

这里是:

enter image description here

回答

0

如果你做任何变量作为最终,你不能改变最终的变量的值(这将是不变)。

A final变量只能分配一次,其值不会改变,并且可以帮助避免编程错误。

一旦最终变量已分配,它始终包含相同的值。如果一个最后的变量持有对某个对象的引用,则该对象的状态可能会通过对该对象的操作而改变,但该变量将始终引用相同的对象。

+0

那又有什么问题?最终仅限于其定义的范围。 –

+0

@why_vincent即使仅限于第一次分配值时不能更改的范围。删除所有最终关键字并尝试。将最终关键字仅用于需要常量的地方 – Karthik

+0

1:查看调试窗口,单元格具有不同的值。如果他们没有被分配到不同的值,那又怎么会发生? 2:试过你说的话,但它不会改变任何东西。 –

相关问题