Java 是否可以使用Apache POI XSSF设置活动范围?
我正在使用ApachePOIXSSF阅读和编写Excel工作表 我知道我可以使用Java 是否可以使用Apache POI XSSF设置活动范围?,java,apache-poi,xssf,Java,Apache Poi,Xssf,我正在使用ApachePOIXSSF阅读和编写Excel工作表 我知道我可以使用Sheet.setActiveCell(CellAddress地址)在工作表上设置活动单元格 但是,我想将其设置为一个包含多个单元格的范围,如下图所示: 当我使用Excel保存包含多个选定单元格的工作表时,这些单元格将在打开保存的文件时被选中。 有没有办法用POI XSSF实现这一点?您可以使用以下行在excel中实现ranke作为活动单元格: sheet.setActiveCell("A1:B2");
Sheet.setActiveCell(CellAddress地址)
在工作表上设置活动单元格
但是,我想将其设置为一个包含多个单元格的范围,如下图所示:
当我使用Excel保存包含多个选定单元格的工作表时,这些单元格将在打开保存的文件时被选中。
有没有办法用POI XSSF实现这一点?您可以使用以下行在excel中实现ranke作为活动单元格:
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();
}
}
并使用类似于:
sheet.setActiveCell(new CellRangeAddress(new CellAddress("A1"), new CellAddress("B2")));
这不是最干净、最好的方法,但可以在没有警告的情况下工作 您可以使用以下行在excel中实现ranke作为活动单元格:
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();
}
}
并使用类似于:
sheet.setActiveCell(new CellRangeAddress(new CellAddress("A1"), new CellAddress("B2")));
这不是最干净、最好的方法,但可以在没有警告的情况下工作 谢谢你的回答,这很有效。然而,这种方法似乎已被弃用,但我找不到合适的替代方法。例如,这不起作用,因为setActiveCell只接受CellAddress作为输入:
CellRangeAddress adr=CellRangeAddress.valueOf(“A1:B2”);getSheetAt(wb.getActiveSheetIndex()).setActiveCell(adr)代码>您使用的是哪个版本我使用的是3.16,它似乎是最新的版本。我编辑了我的答案,仍然不是最好的解决方案,但有一个选择为什么您使用如此复杂的方法来构建CellRangeAddress
?为什么不这样做呢?谢谢你的回答,这很有效。然而,这种方法似乎已被弃用,但我找不到合适的替代方法。例如,这不起作用,因为setActiveCell只接受CellAddress作为输入:CellRangeAddress adr=CellRangeAddress.valueOf(“A1:B2”);getSheetAt(wb.getActiveSheetIndex()).setActiveCell(adr)代码>您使用的是哪个版本我使用的是3.16,它似乎是最新的版本。我编辑了我的答案,仍然不是最好的解决方案,但有一个选择为什么您使用如此复杂的方法来构建CellRangeAddress
?为什么不直接做呢?