2017-06-14 93 views
0

我使用Apache POI XSSF來讀取和寫入Excel表格。是否可以使用Apache POI XSSF設置活動範圍?

我知道我可以使用Sheet.setActiveCell(CellAddress address)在工作表上設置活動單元格。

然而,我想它設置爲包含在片材上多於一個的小區中的範圍,由下面的圖片所示:

Range selected in Excel Sheet

當我保存與選定的多個小區的片材使用Excel在打開保存的文件時選擇這些。 有沒有辦法用POI XSSF來做到這一點?

回答

3

,您可以使用以下行來實現蘭克作爲活動單元格在Excel中:

sheet.setActiveCell("A1:B2"); 

希望它能幫助。

正如從3.16起setActiveCell(String)方法已被棄用,你不希望使用過時的方法我會建議創建自己的CellAddress:

public class CellRangeAddress extends CellAddress { 

    private CellAddress start; 
    private CellAddress end; 

    public CellRangeAddress(final CellAddress start, final CellAddress end) { 
     super(start); 
     this.start = start; 
     this.end = end; 
    } 


    @Override 
    public String formatAsString() { 
     if (end != null) { 
      return start.formatAsString() + ":" + end.formatAsString(); 
     } 
     return super.formatAsString(); 
    } 
} 

和使用IST像:

sheet.setActiveCell(new CellRangeAddress(new CellAddress("A1"), new CellAddress("B2"))); 

不是最乾淨和最好的方式,但工作沒有警告。

+0

謝謝你的回答,這個工程。但是,這種方法似乎已被棄用,但我找不到合適的替代品。 例如,這不起作用,因爲setActiveCell只接受CellAddress作爲輸入: 'CellRangeAddress adr = CellRangeAddress.valueOf(「A1:B2」); wb.getSheetAt(wb.getActiveSheetIndex())。setActiveCell(adr);' – padrino

+0

你使用的是哪個版本 – kism3t

+0

我使用的是3.16,它似乎是最近的一個。 – padrino

相關問題