2016-09-23 8 views
0

小さなプロジェクトでApache POIを使用する方法を学習しようとしています。色分けされたセルを使用してExcelを使用して「ルームレイアウト」を作成し、そのデータをJavaプログラムにロードします。Apache POIでセルの色を取得

空白のセルの色にアクセスすることは可能ですか(データや値はありません)、またはセルに必要なものはありますか? Apache POIがそれを読むためにはデータが必要ですか?

私は色にのみ興味がありますので、セルに迷惑データを入れたり、座標に基づいて繰り返し処理したりすることが望ましいかもしれませんか?私はApache POIにはまったく新しいものなので、どんな助けでも大歓迎です。

答えて

3

何を試しましたか? Busy Developers' Guide to HSSF and XSSF Featuresをお読みください。

以下ブックと仮定すると:次のコードは、a.xlsx(XSSF)と同様a.xls(HSSF)と同様に動作するはず

enter image description here

を。

import org.apache.poi.ss.usermodel.*; 
import org.apache.poi.xssf.usermodel.*; 
import org.apache.poi.hssf.util.HSSFColor; 
import org.apache.poi.openxml4j.exceptions.InvalidFormatException; 

import java.io.*; 

class ReadExcelEmptyColoredCells { 

public static void main(String[] args) { 
    try { 

    //Workbook workbook = WorkbookFactory.create(new File("a.xls")); 
    Workbook workbook = WorkbookFactory.create(new File("a.xlsx")); 

    Sheet sheet = workbook.getSheetAt(0); 

    for (Row row : sheet) { 
    for (Cell cell : row) { 
    if (! "".equals(String.valueOf(cell))) 
     System.out.println(cell.getAddress() + ": " + String.valueOf(cell)); 
    CellStyle cellStyle = cell.getCellStyle(); 
    Color color = cellStyle.getFillForegroundColorColor(); 
    if (color != null) { 
     if (color instanceof XSSFColor) { 
     System.out.println(cell.getAddress() + ": " + ((XSSFColor)color).getARGBHex()); 
     } else if (color instanceof HSSFColor) { 
     if (! (color instanceof HSSFColor.AUTOMATIC)) 
     System.out.println(cell.getAddress() + ": " + ((HSSFColor)color).getHexString()); 
     } 
    } 
    } 
    } 

    workbook.close(); 

    } catch (InvalidFormatException ifex) { 
    } catch (FileNotFoundException fnfex) { 
    } catch (IOException ioex) { 
    } 
} 
} 
+0

私は実際に何かを試したことはありませんでした。私はどこから始めたらいいのか分かりませんでした。しかし、あなたのコードを調べることは、これがどのように動作するかを私のベアリングに与える上で非常に役立ちます。ありがとうございました。 – Geo

関連する問題