我正在使用APACHE POI进行条件格式化。我得到txt文件作为输入,我将其转换为工作表,然后执行条件格式。现在,第一列和标题是我不会进行任何格式化的文本。我必须在其余的单元格上进行条件格式化,比如B2:I10(但它会不断变化)如何动态定义单元格范围。
目前,我有
CellRangeAddress[] my_data_range = {CellRangeAddress.valueOf("B2:I10")};
my_cond_format_layer.addConditionalFormatting(my_data_range,my_rule1)
如何动态定义my_data_range,保留第一列和第一行。
答案 0 :(得分:1)
根据我的理解,我将问题分为两部分。
首先: - 需要知道动态数据的单元格范围地址
第二: - 重新定义单元格范围地址。
第一个解决方案:动态获取需要在范围内引用的单元格范围。
您可以轻松获取数据的第一个单元格(第一行/第一列数据)(说它的A3)和最后一个单元格(最后一行/最后一列)(比如它的F9)
如果您有任何单元格,您可以轻松地从
获取其参考cell.getReference(); //will give you A3
现在我们需要使用简单的字符串操作分离A和3
char startCellColRef = cell.getReference().toString().charAt(0); // will Give you A
int startCellRowRef = cell.getReference().toString().charAt(1); // will give you 3
使用相同的方法也可以获得结束索引。
第二种解决方案:动态更改单元格引用。
Name reference = wb.getName("NameReferenceInExcelSheet");
referenceString = sheetName+"!$"+startCellColRef+"$"+startCellRowRef+":$"+endCellColRef+"$"+endCellRowRef;
reference.setRefersToFormula(referenceString);