2010-02-16 54 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