2017-06-14 110 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