Quelle est la meilleure API pour lire des feuilles Excel en java-JXL ou Apache POI [fermé]


Laquelle des 2 API est la plus simple à lire / écrire / éditer des feuilles Excel ? Ces API ne prennent-elles pas en charge les extensions CSV ?

Utilisation de JXL pour le fichier.xls et fichier.xlsx, je reçois une exception comme:

jxl.read.biff.BiffException: Unable to recognize OLE stream
    at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116)
    at jxl.read.biff.File.<init>(File.java:127)
    at jxl.Workbook.getWorkbook(Workbook.java:268)
    at core.ReadXLSheet.contentReading(ReadXLSheet.java:46)
    at core.ReadXLSheet.init(ReadXLSheet.java:22)
    at core.ReadXLSheet.main(ReadXLSheet.java:72)

Les deux pour .xls et .extensions xlsx. La version Java que j'utilise est: JDK1. 6

Author: Rubens Mariuzzo, 2013-02-20

4 answers

J'ai utilisé à la fois JXL (maintenant "JExcel") et Apache POI. Au début, j'ai utilisé JXL, mais maintenant j'utilise Apache POI.

Tout d'abord, voici les choses où les deux API ont la même fonctionnalité finale:

  • Les deux sont libres
  • Style de cellule: alignement, arrière-plans (couleurs et motifs), bordures (types et couleurs), prise en charge de la police (noms de police, couleurs, taille, gras, italique, barré, souligné)
  • Formules
  • Hyperliens
  • Cellule fusionnée régions
  • Taille des lignes et des colonnes
  • Formatage des données: Nombres et dates
  • Habillage de texte dans les cellules
  • Geler les vitres
  • Prise en charge de l'en-tête/pied de page
  • Lire / Écrire des feuilles de calcul existantes et nouvelles
  • Les deux tentent de garder intacts autant que possible les objets existants dans les feuilles de calcul qu'ils lisent.

Cependant, il existe de nombreuses différences:

  • La différence la plus significative est peut-être que Java JXL ne prend pas en charge Excel 2007+ ".xlsx " format; il ne supporte que l'ancien BIFF (binaire)".format "xls". Apache POI prend en charge les deux avec un design commun.
  • De plus, la partie Java de l'API JXL a été mise à jour pour la dernière fois en 2009 (il y a 3 ans, 4 mois au moment où j'écris ceci), bien qu'il semble qu'il existe une API C#. Apache POI est activement maintenu.
  • JXL ne prend pas en charge la mise en forme conditionnelle, Apache POI le fait, bien que ce ne soit pas si significatif, car vous pouvez formater conditionnellement des cellules avec les vôtres code.
  • JXL ne prend pas en charge rich formatage du texte , c'est-à-dire formatage différent dans une chaîne de texte; Apache POI le prend en charge.
  • JXL ne prend en charge que certaines rotations de texte: horizontales/verticales, +/- 45 degrés et empilées; Apache POI prend en charge tout nombre entier de degrés plus empilés.
  • JXL ne prend pas en charge les formes de dessin; Apache POI le fait.
  • JXL prend en charge la plupart des paramètres de configuration de page tels que Paysage/Portrait, Marges, Taille du papier et Zoom. Apache POI prend en charge tout cela, en plus de Répéter les lignes et les colonnes.
  • JXL ne prend pas en charge les volets divisés; Apache POI le fait.
  • JXL ne prend pas en charge la création ou la manipulation de graphiques; ce support n'existe pas encore dans Apache POI, mais une API commence lentement à se former.
  • Apache POI a un ensemble plus complet de documentation et d'exemples disponibles que JXL.

De plus, POI contient non seulement l'API principale "usermodel", mais également une API basée sur les événements si tout ce que vous voulez faire est lu le contenu de la feuille de calcul.

En conclusion, en raison de la meilleure documentation, de plus de fonctionnalités, du développement actif et de la prise en charge du format Excel 2007+, j'utilise Apache POI.

 236
Author: rgettman, 2013-02-20 18:12:07

J'ai utilisé POI.

Si vous utilisez cela, gardez à l'œil ces formateurs de cellules: créez-en un et utilisez-le plusieurs fois au lieu de créer à chaque fois pour la cellule, c'est une énorme différence de consommation de mémoire ou de grandes données.

 11
Author: , 2013-02-20 13:14:37

Je ne suis pas familier avec JXL et mais nous utilisons POI. POI est bien entretenu et peut gérer à la fois le binaire .format xls et le nouveau format basé sur XML qui a été introduit dans Office 2007.

Les fichiers CSV ne sont pas des fichiers Excel, ce sont des fichiers texte, donc ces bibliothèques ne les lisent pas. Vous devrez analyser vous-même un fichier CSV. Je ne connais aucune bibliothèque de fichiers CSV, mais je n'ai pas regardé non plus.

 5
Author: jwesley, 2013-02-20 13:43:26

Pour lire des fichiers CSV "simples" en Java, il existe une bibliothèque appelée OpenCSV, disponible ici: http://opencsv.sourceforge.net/

 1
Author: Jerry Oberle, 2014-01-03 15:43:15