定义动态单元格范围

时间:2015-10-30 03:07:06

标签: java excel apache-poi

我正在使用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,保留第一列和第一行。

1 个答案:

答案 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);