1. 概要

Excelシートでは、背景色を変更してテーブルヘッダーを強調表示すると、常にエレガントに見えます。 この記事では、 ApachePOIを使用してセルの背景色を変更する方法について説明します。

また、JavaでのMicrosoftExcelの操作チュートリアルを読んで、JavaでのExcelの操作の基本を学ぶことをお勧めします。

2. Mavenの依存関係

開始するには、pom.xmlの依存関係としてpoi-ooxmlを追加する必要があります。

<dependency>
     <groupId>org.apache.poi</groupId>
     <artifactId>poi-ooxml</artifactId>
     <version>5.2.0</version>
 </dependency>

3. セルの背景色の変更

3.1. セルの背景について

エクセルシートでは、色や模様を塗りつぶすだけでセルの背景を変えることができます。 次の画像では、セル A1 は水色の背景で塗りつぶされていますが、セルB1はパターンで塗りつぶされています。 このパターンの背景は黒で、その上に水色の斑点があります。

3.2. 背景色を変更するためのコード

Apache POIは、背景色を変更するための3つの方法を提供します。 CellStyle クラスでは、この目的のために setFillForegroundColor setFillPattern 、およびsetFillBackgroundColorメソッドを使用できます。 色のリストは、IndexedColorsクラスで定義されています。 同様に、パターンのリストはFillPatternTypeで定義されています。

時には、setFillBackgroundColorという名前が私たちを誤解させる可能性があります。 しかし、その方法自体は、セルのバックグラウンドを変更するには十分ではありません。 単色で塗りつぶしてセルの背景を変更するには、setFillForegroundColorメソッドとsetFillPatternメソッドを使用します。 最初の方法は塗りつぶす色を指定し、2番目の方法は使用する塗りつぶしパターンを指定します。

次のスニペットは、セルA1に示されているようにセルの背景を変更する方法の例です。

public void changeCellBackgroundColor(Cell cell) {
    CellStyle cellStyle = cell.getCellStyle();
    if(cellStyle == null) {
        cellStyle = cell.getSheet().getWorkbook().createCellStyle();
    }
    cellStyle.setFillForegroundColor(IndexedColors.LIGHT_BLUE.getIndex());
    cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
    cell.setCellStyle(cellStyle);
}

セルの背景をパターンで変更するには、2つの色を使用する必要があります。1つは背景全体を塗りつぶし、もう1つは最初の色の上にパターンを塗りつぶします。 ここでは、これら3つの方法すべてを使用する必要があります。

ここでは、メソッドsetFillBackgroundColorを使用して背景色を指定します。 この方法だけでは効果はありません。 setFillForegroundColor を使用して2番目の色を選択し、setFillPatternを使用してパターンタイプを指定する必要があります。

次のスニペットは、セルB1に示されているようにセルの背景を変更する方法の例です。

public void changeCellBackgroundColorWithPattern(Cell cell) {
    CellStyle cellStyle = cell.getCellStyle();
    if(cellStyle == null) {
        cellStyle = cell.getSheet().getWorkbook().createCellStyle();
    }
    cellStyle.setFillBackgroundColor(IndexedColors.BLACK.index);
    cellStyle.setFillPattern(FillPatternType.BIG_SPOTS);
    cellStyle.setFillForegroundColor(IndexedColors.LIGHT_BLUE.getIndex());
    cell.setCellStyle(cellStyle);
}

コードの詳細については、Javaクラス全体および関連するJUnitテストケースを参照してください。

4. 結論

このクイックチュートリアルでは、ApachePOIを使用してExcelシートのセルのセル背景を変更する方法を学習しました。

CellStyleクラスのsetFillForegroundColor setFillPattern setFillBackgroundColor の3つのメソッドのみを使用して、セルの背景色と塗りつぶしを簡単に変更できます。パターン。

例は、GitHubから入手できます。