定义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);