L'accès à la palette de couleurs dans un XSSFWorkbook

Lors de l'utilisation de POI, des cellules et des polices dans les documents excel contiennent des informations de couleur qui ne renvoie pas toujours une valeur rvb et, souvent, elle propose uniquement une valeur d'index. La valeur indexée doit être recherchée à l'encontre de quelque chose pour obtenir une couleur. Dans un HSSFWorkbook (xls) il y a une méthode pour obtenir la palette:

InputStream in = new FileInputStream("sheet.xls");
HSSFWorkbook wb = new HSSFWorkbook(in);
wb.getCustomPalette();

Lors de l'accès à un XSSFWorkbook (xlsx) il n'y a pas une telle méthode et, en fait, je ne peux trouver aucune palette d'informations n'importe où dans les classes associées. Je suis en mesure d'obtenir la valeur de l'indice de XSSFont et de la Cellule, mais la seule façon d'obtenir une couleur "nom" est pour le match contre le IndexedColors enum. Cela me renvoie le même problème; je n'ai pas encore de valeur rvb à utiliser.

InputStream in = new FileInputStream("sheet.xlsx");
XSSFWorkbook wb = new XSSFWorkbook (in);
wb.getCustomPalette(); <-- fail!

Je suis le XSSFColor par le biais de la CellStyle, comme suit:

CellStyle style = cell.getCellStyle();
XSSFColor color = style.getFillBackgroundColorColor();

Pour obtenir un nom de couleur via IndexedColors:

for (IndexedColors c : IndexedColors.values()) { if (c.index == indexColor){ System.out.println("Color: " + c.name()); } }

Des questions similaires: Comment puis-je obtenir de l' (Java Apache POI HSSF) Couleur de Fond d'une cellule donnée?

Référence: http://poi.apache.org/spreadsheet/quick-guide.html#CustomColors

mise à Jour 1: j'ai trouvé quelque chose qui fonctionne, enfin. Cette méthode de XSSFColor renvoie l'ARGB hex code et il me permet de déterminer les valeurs RVB (évidemment). J'espère que cela aide à économiser un nombre x d'heures pour quelqu'un avec le même problème.

((XSSFColor) color).getARGBHex())

mise à Jour 2: Beaucoup à mon grand désarroi, j'ai trouvé que certaines Cellules ne sont pas de retour arrière-plan XSSFColor contenant ARGBHex de données. La recherche d'un travail autour de cela.

OriginalL'auteur Paul Gregoire | 2013-08-07