3

:) 最后经过研究,我找到了我的问题的解决方案,但还不满意

如果同一行的 B 列和 C 列没有相同的值,我想使用条件格式来显示一条黄色的行。这是 VBA 上的 marco 我不只是为了帮助我理解

    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 仅用于测试

我该怎么办..在价值比较器处提前谢谢你:)

4

2 回答 2

3

最后这是我的解决方案,它工作正常..想想你@Philip

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();
于 2013-05-10T10:32:08.197 回答
1

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

于 2013-05-09T20:59:29.743 回答