2017-12-07 4 views
0

使用しています。3.16Apache poiでセルスタイルを名前で取得する方法

メソッドでいくつかのセルスタイルを作成します。そして、私はセル値を設定する別の方法にブックを渡します。

このシナリオでは、すべてのセルスタイルをパラメータとして他のメソッドに渡す必要があります。ワークブックだけを渡し、そのワークブック自体からスタイルを取得する方法はありますか?

私は

workbook.getCellStyleAt(idx). 

が見つかりましたが、このために、私が作成したすべてのスタイルのインデックス付きのトラックを維持する必要があります。それをハードコードします。その間に新しいスタイルのコードを書くと、インデックス番号が変わるたびにシートフォーマットが乱れることがあります。

サンプルコード

SXSSFWorkbook workbook = new SXSSFWorkbook(1000); 
SXSSFSheet sheet = workbook.createSheet("SheetName"); 

CellStyle styleBOM = workbook.createCellStyle(); 
Font fontBOM = workbook.createFont(); 
fontBOM.setFontHeightInPoints((short) 16); 
fontBOM.setFontName("Arial"); 
fontBOM.setBold(false); 
styleBOM.setFont(fontBOM); 

CellStyle headKey = workbook.createCellStyle(); 
Font fontKey = workbook.createFont(); 
fontKey.setFontHeightInPoints((short) 11); 
fontKey.setFontName("Arial"); 
fontKey.setBold(true); 
headKey.setFont(fontKey); 

CellStyle headValue = workbook.createCellStyle(); 
Font fontValue = workbook.createFont(); 
fontValue.setFontHeightInPoints((short) 11); 
fontValue.setFontName("Arial"); 
fontValue.setBold(false); 
headValue.setFont(fontValue); 

valueList=someLogicToFetchValues(someInput); 

downloadExcel(valueList, workbook,styleBOM, headKey,headValue) 

答えて

1

あなたはすべて作成したスタイルで、静的なテーブルを作成することができ、その名前(またはものは何でもあなたが選ぶ)によって識別された各。
スタイルを作成するたびに、その表にスタイルを追加し、必要なときに同じ表からスタイルを読み込みます。あなたのコード内で

class CellStyleMap 
{ 
    public static synchronized void addStyle(String identifier, 
              CellStyle style) 
    { 
    styles.put(identifier, style); 
    } 

    public static synchronized CellStyle getStyle(String identifier) 
    { 
    return (styles.get(identifier)); 
    } 

    private static Hashtable<String, CellStyle> styles = new Hashtable<String, CellStyle>(); 

} // class CellStyleMap 

CellStyle styleBOM = workbook.createCellStyle(); 
... 
CellStyleMap.addStyle("BOM", styleBOM); 

そして、あなたがそれを必要とする:

CellStyle styleBOM; 
styleBOM = CellStyleMap.getStyle("BOM"); 
+0

これは私が探していたものである。このような
何か。うまくいった。ありがとう。 –

関連する問題