Comment lire un fichier excel, feuille par feuille à l'aide jxl
Je suis en train de travailler sur un utilitaire pour convertir un fichier excel à partir d'un format à un autre. J'ai été suggéré d'utiliser jxl de la bibliothèque pour répondre aux exigences qui sont comme suit.
lire le fichier de la feuille par feuille et ne suivant
obtenir le nom de la feuille, faire la clé d'une carte et obtenir ses en-têtes de colonne et de faire de leur valeur.
il sera de ce fait en suivant
Map<String, List<String>> result = result<key=sheetName, value=list of column headers>
Le faire pour toutes les feuilles dans le fichier
Je l'ai fait en manière suivante
publique Map> fonction(String filePath ) throws IOException, BiffException{
Map<String, List<String>> map = new HashMap<String, List<String>>();
Workbook workBook=Workbook.getWorkbook(new File (filePath));
String [] sheetNames = workBook.getSheetNames();
Sheet sheet=null;
List<String > fields = new ArrayList<String>();
for (int sheetNumber =0; sheetNumber < sheetNames.length; sheetNumber++){
sheet=workBook.getSheet(sheetNames[sheetNumber]);
for (int columns=0;columns < sheet.getColumns();columns++){
fields.add(sheet.getCell(columns, 0).getContents());
}
map.put(sheetNames[sheetNumber],fields);
}
return map;
}
Je l'ai fait avec l'espoir d'arriver au résultat souhaité, mais ce qu'il fait est qu'il stocke en-têtes de colonne de toutes les feuilles à l'encontre de chaque touche de la valeur.
c'est à dire si il y a deux fiches dans le fichier nommé comme
- feuil1
- feuil2
et les suivantes sont les leurs en-têtes de colonne
La feuille Sheet1 -> id, nom
sheet2 -> catégorie, prix
alors la carte sera comme
result<sheet1,<id, name, caegory, price>>
result<sheet2,<id, name, caegory, price>>
Ne pouvez pas comprendre ce que je fais mal?
De l'aide s'il vous plaît, que mon projet a beaucoup de backend calculs et je ne veux pas passer beaucoup de temps dans ce truc.
Toute aide sera très appréciée
OriginalL'auteur moCap | 2012-09-11
Vous devez vous connecter pour publier un commentaire.
J'ai résolu le problème après le poster ici, mais vous avez oublié de donner la solution ici.
Le problème dans le code ci-dessus est l'emplacement de la déclaration de la liste.
Il doit être déclarée à l'intérieur de la
for
, afin qu'il soit actualisé (vidé) après chaque itération de la boucle et stocke les données d'une seule feuille à la fois.Le bon code est ci-dessous.
Espère que Ça vous aidera quelqu'un
OriginalL'auteur moCap
OriginalL'auteur naisenTMI