2017-11-02 13 views
0

私のコードでは、テキストが "PASS"の場合、HSSFWorkbookの特定の列のセルの色を変更したいと思います。しかし、コードを書くときに、多くのメソッドと定数のような多くのメソッドと定数は、BRIGHT_GREEN.indexsetFillPattern,SOLID_FOREGROUNDは推奨されていません。私はApache POI公式サイトで代替案を探しましたが、そこに書かれているコードも非難されています。 @deprecationタグについて言及すれば問題はないが、時には100〜150行(行)後にセルの色が変化しないことがわかっている。誰も私に@deprecationを避けるための選択肢があると教えてもらえますか?参考:私はpoi-bin-3.17-beta1-20170701 jarsを使用しています。事前に 感謝:)Apache POIでHSSFの組み込みの色を使用することを避けるための別の方法はありますか?

if(cell.getStringCellValue().equalsIgnoreCase("Pass")){ 
        HSSFCellStyle style = workbook.createCellStyle(); 
        style.setFillForegroundColor(HSSFColor.BRIGHT_GREEN.index); 
        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); 
        cell.setCellStyle(style); 
       } 

答えて

2

そのドキュメントから:

あなたのケースではそう
/** 
* @deprecated use {@link HSSFColorPredefined} instead 
*/ 
@Deprecated 
@Removal(version="3.18") 
public static class BRIGHT_GREEN extends HSSFColorRef { 
    private static final HSSFColorPredefined ref = HSSFColorPredefined.BRIGHT_GREEN; 
    public static final short index = ref.getIndex(); 
    public static final int index2 = ref.getIndex2(); 
    public static final short[] triplet = ref.getTriplet(); 
    public static final String hexString = ref.getHexString(); 
    public BRIGHT_GREEN() { super(ref); } 
} 

:あなたのsetFillPatternについてはHSSFColor.HSSFColorPredefined.BRIGHT_GREEN

あなたの新しいコードが見えるはずです
style.setFillPattern(FillPatternType.SOLID_FOREGROUND); 

このように

style = workbook.createCellStyle(); 
    style.setFillForegroundColor(HSSFColor.HSSFColorPredefined.BRIGHT_GREEN.getIndex()) 
    style.setFillPattern(FillPatternType.SOLID_FOREGROUND); 
+0

おかげさまで@sfat、しかし今、別の問題に直面しています。私が言ったように、私は** style.setFillForegroundColor(HSSFColor.BRIGHT_GREEN.index)から**私のコードを** style.setFillBackgroundColor(HSSFColor.HSSFColorPredefined.BRIGHT_GREEN)**に変更しました**しかし、エラーが表示されます: * HSSFCellStyle型のメソッドsetFillBackgroundColor(short)は、引数(HSSFColor.HSSFColorPredefined)には適用できません。setFillForeGroundColor(...)に変更します。* ** setFillForeGroundColor(..)**を使用しようとしましたが、私は同じエラーを言って、それを** setFillBackGroundColor(..)**に変更することを提案します。 – BongCule

+0

@BongCuleが答えを更新しました。最新のビットを確認してください。あなたの場合、あなたの問題はあなたが 'getIndex()'を呼ばないからです。 Googleでのクイック検索は、今後これらの問題を解決するのに役立ちます:) – sfat

+0

おかげでトンの男。あなたはちょうど私の問題を解決しました。 :) – BongCule

関連する問題