2010-02-16 116 views
2

我使用Apache POI来创建一个大的Excel电子表格,这对客户端来说可能非常公式沉重,后来可能会用新公式修改我的程序代码。我正在处理的最大问题是处理POI工作簿针对其行和列是0索引的事实,而Excel公式处理文档就好像它是1索引的。我使用的是帮助类,使转换现在:Apache POI Excel行和列索引

class RowHelper { 
    public static int getCell(int col) { 
     return col - 1; 
    } 

    public static String getCellAddress(int row, int col) { 
     return CellReference.convertNumToColString(col) + row; 
    } 
} 

当我在文档中编辑行我写这样的:

posRow.getCell(RowHelper.getCell(189)).setCellFormula(String.format("COUNT(%1$s:%2$s)", RowHelper.getCellAddress(2, 177), RowHelper.getCellAddress(ActiveSheet.getPhysicalNumberOfRows(), 177))); 
//=COUNT(FU2:FU477) 

但是,这是不是很干净的代码并且对于客户在以后的使用中不会很容易。有没有更好的方法来做到这一点?

回答

1

尽管与您的问题没有直接关系,但我发现自己将一些Excel类与我自己一起进行自定义处理。例如,我不直接使用HSSFWorkbooks,我使用包含HSSFWorkbook的ExcelWorkbook类。我这样做的原因是为类添加了相关的帮助器方法,而对于其他我不修改的方法,我只是传递给HSSFWorkbook实例。您还可以扩展您正在使用的相关类来覆盖该行为,但您可能需要查看它们的源代码,以确保不会破坏任何内容。

+0

感谢您的建议!我最终为每种类型(JWorkbook,JSheet等)创建了新的类,就像你做的那样,并且实现了与原始相同的接口,所以我可以将它们作为相同的对象传递。 – taiidani 2010-02-22 01:37:01