3

:) 最後に、調査の後、まだ満足していない問題の解決策を見つけました

同じ行の列 B と列 C に同じ値がない場合、条件付き書式を使用して行を黄色で表示したいと思います。これは VBA のマルコです。理解するためだけに使用しているわけではありません。

    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

これは My 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プロパティを取得でき、内容が数値の場合、値は数値になります。

于 2013-05-09T20:59:29.743 に答える