Je lisons le fichier Excel à l'aide de la bibliothèque de POI dans mon code Java. Jusqu'ici bien. Mais maintenant j'ai une exigence. Le fichier Excel contient de nombreux enregistrements (par exemple 1000 rangées). Il a aussi des en-têtes de colonne (1ère rangée). Maintenant, je fais un filtrage Excel dessus. Dites que j'ai une colonne de «année» et je filtrons toutes les lignes pour l'année = 2019. Je reçois 15 rangées. Question: Je veux traiter seulement ces 15 lignes dans mon code Java. Existe-t-il une méthode dans la bibliothèque de POI ou un moyen de savoir si la ligne en cours de lecture est filtrée ou (l'autre moyen non filtrée). Merci.
J'ai déjà du code de travail mais je cherche maintenant comment lire uniquement la ligne filtrée. Rien de nouveau n'a encore essayé autre que la recherche dans la bibliothèque et les forums. P>
Le code ci-dessous est à l'intérieur d'une méthode. Je ne suis pas habitué à formater avec Stackoverflow. Ignorer donc gentiment aucun problème de formatage. P>
3 Réponses :
Vous devez utiliser un filtre automatique fourni dans la bibliothèque POI Apache et vous avez également défini le gel. Je fournis ci-dessous l'extrait de code bref, vous pouvez utiliser en conséquence.
XSSFSheet sheet = wBook.getSheet(CommonConstants.METADATA_WORKSHEET); sheet.setAutoFilter(new CellRangeAddress(0, 0, 0, numColumns)); sheet.createFreezePane(0, 1);
Dans votre fichier Excel, vous avez ajouté filtrer la colonne / s pour que je puisse définir AUTOFILTER et que nous fabriquons parfois l'en-tête Excel Colonne telle que gelée ou fixe pour augmenter la visibilité, car j'ai défini CreatefreeZepane, ici, vous pouvez donner aux numéros de colonne.
Merci pour la réponse rapide. Je vais essayer de vous faire savoir.
Toutes les lignes qui ne sont pas visibles dans la feuille ont une hauteur zéro. Donc, si le besoin ne lisait que les lignes visibles, on pourrait vérifier via exemple p> feuille: p> code: p> résultat: p>
Merci. J'ai utilisé Rowrecord.getzeroheight () pour trouver la ligne de filtrage. Cela a fonctionné pour moi.
Je devais remplacer certains crochets et créer ma propre approche pour intégrer le filtrage de lignes cachées afin d'empêcher le traitement de ceux-ci. Ci-dessous est un extrait de code. Mon approche consiste à ouvrir une deuxième copie de la même feuille pour que je puisse interroger la ligne actuelle de devenir traitée si elle est cachée ou non. La réponse ci-dessus touche à ce sujet, la situation ci-dessous se développe pour montrer comment elle peut être joliment incorporée dans le cadre Spring Batch Excel. Un inconvénient est que vous devez ouvrir une deuxième copie du même dossier, mais je ne pouvais pas comprendre un moyen (peut-être qu'il n'y en a pas!) Pour avoir la main sur la feuille de travail interne, entre autres raisons parce que org. springframework.batch.item.excel.poi.poisheeteet code> est package privé ( Notez que ci-dessous la syntaxe est groovy !!! em>):
Collez un certain code que vous avez écrit afin que les gens vous aideront.
Ajoutée. Mais il n'y a-t-il pas de moyen de ne pas lire la rangée filtrée d'Excel. Le code ci-dessus n'est qu'un exemple.