XLS – 条件格式 – Java POI示例

:)最后,研究后,我发现解决scheme,我的问题,这是不满意的

我想使用条件格式来显示一个黄色的行,如果列B和C到同一行不具有相同的值。 这是VBA上的marco我没有用它来帮助我undrstund

For i = 3 To fin Step 1 Range("C" & i).Select Selection.FormatConditions.Delete Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, _ Formula1:="=B" & i Selection.FormatConditions(1).Interior.ColorIndex = 6 

这是我的Methode java。就是这样但是

 FileInputStream file = new FileInputStream(new File("D://DEQ//"+selectitem.getRefDeq()+"//Comparatif.xls")); HSSFWorkbook workbook1 = new HSSFWorkbook(file); HSSFSheet sheet1 = workbook1.getSheet("page1"); HSSFSheetConditionalFormatting cf =sheet1.getSheetConditionalFormatting(); HSSFConditionalFormattingRule cfrole=cf.createConditionalFormattingRule(org.apache.poi.hssf.record.CFRuleRecord.ComparisonOperator.NOT_EQUAL, "120"); HSSFPatternFormatting fill_pattern = cfrole.createPatternFormatting(); fill_pattern.setFillBackgroundColor(IndexedColors.YELLOW.index); CellRangeAddress[] my_data_range = {CellRangeAddress.valueOf("B17:B26")}; cf.addConditionalFormatting(my_data_range,cfrole); FileOutputStream out = new FileOutputStream(new File("D://DEQ//"+selectitem.getRefDeq()+"//Comparatif.xls")); workbook1.write(out); out.close(); 

这个例子工作得很好,它显示了黄色的彩色线条。 但是正如你已经看到的,我的值是a = 120,它显示为黄色。 问题是我认为价值是不是在我的网页的数字格式..这不是一个问题

我真正的问题是我必须与之相比较的价值,我不知道我是如何表示同一行的每个框B和C. 我把这里放在一个单一的值= 120只用于testing

我应该怎么做..在价值comprarer预先感谢你:)

最后,这是我的解决scheme,它工作正常.. .. @你@菲利普

 FileInputStream file = new FileInputStream(new File("D://DEQ//"+selectitem.getRefDeq()+"//Comparatif.xls")); HSSFWorkbook workbook1 = new HSSFWorkbook(file); HSSFSheet sheet1 = workbook1.getSheet("Comparatif"); //Get first sheet from the workbook HSSFSheetConditionalFormatting cf =sheet1.getSheetConditionalFormatting(); int i; i=17; for(;i<=ligne;i++){ HSSFConditionalFormattingRule cfrole=cf.createConditionalFormattingRule(ComparisonOperator.NOT_EQUAL,"$C$"+i ); HSSFPatternFormatting fill_pattern = cfrole.createPatternFormatting(); fill_pattern.setFillBackgroundColor(IndexedColors.YELLOW.index); CellRangeAddress[] my_data_range = {CellRangeAddress.valueOf("B"+i+":B"+i)}; cf.addConditionalFormatting(my_data_range,cfrole); } for(i=17;i<=ligne;i++){ HSSFConditionalFormattingRule cfrole=cf.createConditionalFormattingRule(ComparisonOperator.NOT_EQUAL,"$B$"+i ); HSSFPatternFormatting fill_pattern = cfrole.createPatternFormatting(); fill_pattern.setFillBackgroundColor(IndexedColors.YELLOW.index); CellRangeAddress[] my_data_range = {CellRangeAddress.valueOf("C"+i+":C"+i)}; cf.addConditionalFormatting(my_data_range,cfrole); } FileOutputStream out = new FileOutputStream(new File("D://DEQ//"+selectitem.getRefDeq()+"//Comparatif.xls")); workbook1.write(out); out.close(); 

您可以获取Cell对象的value属性,如果内容是数字,则该值将是数字。