定义dynamic单元格范围

我正在使用APACHE POI进行条件格式化。 我得到的txt文件作为input,我把它转换成工作表,然后执行条件格式。 现在,第一列和标题是我不会做任何格式的文本。 我必须对其他单元格执行条件格式化,比如B2:I10(但是它会不断变化)。我怎样才能dynamic地定义单元格范围。

目前,我有

CellRangeAddress[] my_data_range = {CellRangeAddress.valueOf("B2:I10")}; my_cond_format_layer.addConditionalFormatting(my_data_range,my_rule1) 

我将如何dynamic定义my_data_range,并保留第一列和第一行。

根据我的理解,我分两部分来解决问题。

首先: –需要知道我们有数据dynamic的单元格区域地址

第二:重新定义单元格范围地址。

第一种解决scheme:dynamic获取需要参考的单元格范围。

您可以很容易地得到数据的第一个单元格(第一行/第一列数据)(说出它的A3)和最后一个单元格(最后一行/最后一列)(比如它的F9)

如果你有任何细胞,你可以很容易地从它的参考

 cell.getReference(); //will give you A3 

现在我们需要使用简单的string操作来分开A和3

 char startCellColRef = cell.getReference().toString().charAt(0); // will Give you A int startCellRowRef = cell.getReference().toString().charAt(1); // will give you 3 

使用相同的方式,你也可以得到最终的索引。

第二种解决scheme:dynamic更改单元格引用。

 Name reference = wb.getName("NameReferenceInExcelSheet"); referenceString = sheetName+"!$"+startCellColRef+"$"+startCellRowRef+":$"+endCellColRef+"$"+endCellRowRef; reference.setRefersToFormula(referenceString);