我正在使用 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,将第一列和行放在一边。
最佳答案
根据我的理解,我将问题分为两部分。
首先:-需要知道我们动态保存数据的单元格范围地址
第二:-重新定义单元格范围地址。
第一个解决方案:动态获取需要在范围内引用的单元格范围。
您可以轻松获取数据的第一个单元格(第一行/第一列数据)(假设为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);
关于java - 定义动态单元格范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33428013/