2017-05-26 2 views
0

J'ai un JTable qui utilise un TableCellRenderer pour colorer l'arrière-plan de certaines cellules en fonction de leurs valeurs.Exporter JTable avec TableCellRenderer personnalisé

J'ai besoin d'exporter cette table dans un fichier Excel avec le même formatage de cellule. Voici un extrait de ce que je vois actuellement dans le JTable.

enter image description here

Dois-je reproduire toute la logique derrière le moteur de rendu dans Apache POI pour obtenir le même résultat, ou il y a un moyen plus rapide?

+0

Cette question est un peu trop large pour être répondu ici. Mais je suggérerais de penser à [Formatage conditionnel] (https://poi.apache.org/spreadsheet/quick-guide.html#Conditional+Formatting) dans 'Excel'. Ceci est proche du rendu de cellule dans 'JTable'. –

+0

Oui je sais mais malheureusement j'ai besoin de le gérer en java ... –

+1

Avez-vous cliqué sur le lien [Conditionnel + Mise en forme] (https://poi.apache.org/spreadsheet/quick-guide.html#Conditional+Formatting) ? Heureusement, c'est apache poi et c'est ** ** "géré à l'intérieur de java". –

Répondre

2

Vous devez toujours créer un classeur, une feuille de calcul, des lignes et des cellules.

Parcourez votre modèle pour chaque ligne et créez une ligne et des cellules (en fonction du nombre de colonnes).

Définissez la valeur de la cellule en fonction des données de votre table.

Pour la couleur:

Il vous aidera si votre modèle de JTable n'a pas seulement les valeurs de chaque cellule, mais aussi le dos couleur de fond. Si ce n'est pas le cas, vous pouvez obtenir la couleur d'arrière-plan à partir de JTable étant donné les valeurs de ligne et de colonne. Vous devez appliquer un style de cellule pour chaque cellule (les styles de cellules peuvent être créés indépendamment du nombre de cellules) et définir la couleur d'arrière-plan en utilisant setFillBackgroundColor().

+2

"Vous devez créer un cellstyle pour chaque cellule": Non, ne faites pas cela. Les styles de cellule sont au niveau du classeur dans Excel et non au niveau de la cellule. Dans le classeur, créez donc un style de cellule pour chaque ** couleur ** nécessaire, puis définissez ce style de cellule sur autant de cellules que nécessaire. –

+0

@AxelRichter merci pour le commentaire. J'ai corrigé ma réponse. – SomeDude

+0

Je vais essayer, je vais accepter la réponse :) donnez-moi quelques jours –