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

87
demandé sur Rubens Mariuzzo 2013-02-20 17:12:26

4 réponses

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é de fin:

  • 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
  • enveloppement du texte dans les cellules
  • Geler Les Volets
  • Support D'en-tête/pied de page
  • Lire / Écrire des feuilles de calcul existantes et nouvelles
  • les deux tentent de conserver les objets existants dans les feuilles de calcul qu'ils lisent intacts autant que possible.

Cependant, il existe de nombreuses différences:

  • peut-être la différence la plus significative est que Java JXL ne supporte pas Excel 2007+ ".XLSX " format; il ne supporte que l'ancien BIFF (binaire) ".XLS " format. 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 lorsque j'écris ceci), bien qu'il semble qu'il existe une API C#. Apache POI est activement maintenu.
  • JXL ne prend pas en charge le formatage conditionnel, Apache POI le fait, bien que ce ne soit pas si significatif, car vous pouvez formater conditionnellement les cellules avec les vôtres code.
  • JXL ne prend pas en charge rich text formatage, c'est-à-dire formatage différent dans une chaîne de texte; Apache POI le supporte.
  • JXL ne prend en charge que certaines rotations de texte: horizontale/verticale, +/- 45 degrés et empilée; 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 mise en Page tels que Paysage/Portrait, marges, format de papier et Zoom. Apache POI prend en charge tout cela ainsi que la répétition des lignes et des colonnes.
  • JXL ne prend pas en charge les volets fractionnés; Apache POI le fait.
  • JXL ne prend pas en charge la création ou la manipulation de graphiques; Ce support n'est pas encore présent dans Apache POI, mais une API commence lentement à se former.
  • Apache POI dispose d'un ensemble de documentation et d'exemples plus étendu que JXL.

De plus, POI contient non seulement l'API principale" usermodel", mais aussi une API basée sur des é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
répondu 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
répondu 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
répondu jwesley 2013-02-20 13:43:26

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

1
répondu Jerry Oberle 2014-01-03 15:43:15