IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

[POI 3.7] Fichier xlsx volumineux


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut [POI 3.7] Fichier xlsx volumineux
    Hello les gens;
    Je suis en train de travailler sur un traitement pour contrôler des fichiers Excel et j'utilise pour cela l'api POI.
    Mon problème provient du fait que les fichiers à contrôler sont relativement volumineux (un peu plus de 300.000 lignes en moyenne) et que cela lève une exception OutOfMemory lors la création d'un objet org.apache.poi.xssf.usermodel.XSSFWorkbook:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try {
    			workBook = new XSSFWorkbook(stringCheminDeMonFichier);
    		} catch (IOException e) {
    			// TODO Bloc catch auto-généré
    			e.printStackTrace();
    		}
    Y'a t'il un moyen de lire ce fichier avec un buffer genre n lignes par n lignes ou une solution plus adéquate?

    Merci pour toutes vos contributions.

  2. #2
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut
    Personne n'a une piste pour moi ?

  3. #3
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Solution 1 de type bête et méchante, te permettant de garder ton code actuel:

    Augmente l'espace mémoire maximum dédié à ta JVM.

    Le paramètre -Xmx de la commande java permet de modifier cet espace.

    ex: java -Xmx128m -jar MonJar.jar place l'espace mémoire max réservé à 128 mégas.


    Solution 2 qui te fera tout recoder:

    Ne plus utiliser la Usermodel API de POI mais passer sur la Streaming Usermodel API (SXSSF).

    http://poi.apache.org/spreadsheet/how-to.html#sxssf

  4. #4
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut
    Users are advised to try the latest build from trunk.
    C'est fiable ? Quelqu'un a déjà essayé avec ?

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Vu que c'est en beta, je suppose que c'est fonctionnel. Par contre vu que c'est relativement récent, je doute que grand monde ait encore essayé...

    Donc à toi de tester, il présentent la fonctionnalité sur leur page, donc je suppose qu'ils l'ont tout de même testé un tant soit peu.

    Donc tu récupère les sources, tu lances le build ant et tu te lance dans un minimum d'essais pour voir ce que ça donne...

    Si tu veux quelque chose d'un peu plus stable, mais moins commode à utiliser (ça revient à utiliser quasi directement le xml du fichier avec SAX) tu peux passer par l'Event API: http://poi.apache.org/spreadsheet/ho...l#xssf_sax_api

  6. #6
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut
    Le but c'est principalement de pouvoir lire de gros fichier.
    Je penche donc pour ta deuxième solution. Je me plonge dedans (si je peux encore en avoir le temps) pour regarder si me convient.

Discussions similaires

  1. Création de fichiers .XLSX avec Apache POI
    Par Geoffrey49000 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 22/07/2011, 17h55
  2. Réponses: 2
    Dernier message: 29/01/2010, 17h59
  3. Réponses: 1
    Dernier message: 22/06/2009, 15h26
  4. Recherche dans un fichier texte volumineux.
    Par Actarus69 dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 27/07/2005, 18h39
  5. Réponses: 43
    Dernier message: 29/11/2004, 17h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo