Comment puis-je obtenir de l' (Java Apache POI HSSF) Couleur de Fond d'une cellule donnée?
J'ai déjà une feuille de calcul excel, qui je suis accesssing et la lecture des valeurs à partir d', je suis en utilisant Apache POI HSSF.
Il est initialisé comme ceci:
HSSFSheet sheet;
FileInputStream fis = new FileInputStream(this.file);
POIFSFileSystem fs = new POIFSFileSystem(fis);
HSSFWorkbook wb = new HSSFWorkbook(fs);
this.sheet = wb.getSheet(exsheet);
Je suis itération sur toutes les cellules qui existent dans la feuille, ce qui rend un objet de cellule:
HSSFCell cell = (HSSFCell) cells.next();
Prière de quelqu'un de familier avec le cadre expliquer comment créer un (HSSFColor) objet pour représenter la couleur du fond de chaque cellule dans la feuille.
Merci beaucoup
MODIFIER, METTRE À JOUR
Pour être clair ce que je veux savoir, c'est: comment puis-je créer/obtenir un HSSFColor objet pour la couleur de fond d'une cellule existante?
cell.getCellStyle().getFillBackgroundColor();
Ce code ne renvoie un numéro court, pas un HSSFColor objet.
Merci pour les réponses jusqu'à présent.
OriginalL'auteur java | 2009-09-30
Vous devez vous connecter pour publier un commentaire.
Il y a des couleurs statiques de classes fournies par le HSSFCell classe, énumérées ici:
http://poi.apache.org/apidocs/org/apache/poi/hssf/util/HSSFColor.html
Si vous souhaitez créer vos propres couleurs personnalisées, vous aurez besoin de créer et de modifier une palette personnalisée. Apache fournit un guide clair à présent:
http://poi.apache.org/spreadsheet/quick-guide.html#CustomColors
OriginalL'auteur Craig Otis
D'obtenir la couleur :
Le court de la valeur retournée par la getFillBackgroundColor est le Excel indice de la couleur.
Vous pouvez obtenir la couleur correspondant à l'index dans le HSSFColor table de hachage, en utilisant le dernier code RMorrisey indiqué.
Pour définir une couleur :
Vous créer une palette personnalisée, et de changer la couleur à un index donné. Ensuite, vous appliquez la couleur pour le style.
Ce qui concerne
Guillaume
OriginalL'auteur PATRY Guillaume
La backgroundcolor informations de XSSFCellStyle pouvez obtenir à partir de la méthode:
Vous pouvez l'imprimer et vous verrez, il est de la structure.
OriginalL'auteur Pudge
Vous ferais quelque chose comme:
Je crois qu'il existe un nombre limité de styles pour un classeur donné; vous voulez réutiliser le même style d'objet, si possible.
[Edit: Désolé, ce serait pour définir la couleur d'une cellule. Pour obtenir la couleur, à utiliser comme:
]
[Edit 2: en Regardant la couleur personnalisée de l'information craig posté, peut-être que vous pouvez essayer:
]
Mise à jour de ma réponse avec un peu d'aide de craig post
OriginalL'auteur RMorrisey
Pour obtenir la couleur d'arrière-plan de la cellule spécifique dans l'hexagone, utilisez ceci:
Remarquez le mot
Color
est utilisé deux foisOriginalL'auteur Ascalonian
OriginalL'auteur ScaryJoker
Ce qui suit est pour XSSF et est en Scala, mais il n'montrer exactement comment obtenir la couleur de l'objet modèle. Je voulais créer une instance de java.awt.La couleur de l'objet de réelles valeurs rvb (ce qui est utile en partie parce que mon débogueur affiche pour moi la couleur réelle de l'objet, lorsque j'arrête à des points d'arrêt, et en partie parce que c'est pour l'exportation vers des systèmes qui n'ont rien à voir avec Excel). Je suis ignorant de la couleur de la valeur alpha et mon Scala peut être un peu naïve. Je proposerais que si cela ne fonctionne pas pour vous, vous devez définir un point de rupture et d'examiner le résultat de la proximité des appels de méthode comme getFillRetourgroundColorColor()
OriginalL'auteur Anthony Holland
Pour XSSF lire fichier xlsx (essayé le HSSF) ,après lutte pour un moment, j'ai juste trouvé
getFillBackgroundXSSFColor()
méthode renvoie en fait sur le "Motif de la Couleur" dans l'onglet Remplissage de "Format de cellule" dans Excel, pas la soi-disant "arrière-plan" de la couleur dans cet onglet. Je ne suis pas sûr si ce devrait.Voir ma capture d'écran ci-dessous. Le retour de l'RVB est en fait FF0000 ,c'est à dire ROUGE.
Donc, pour l'instant, je n'ai pas de moyen pour ce cas et seulement demander à l'utilisateur de remplir le "Motif de la Couleur".
OriginalL'auteur Keith