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

Documents Java Discussion :

Convertir un ficheir excel en inputStream ou bytes


Sujet :

Documents Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut Convertir un ficheir excel en inputStream ou bytes
    Bonjour tout le monde,

    j'ai un fichier excel généré par POI, je désire l'enregistrer en BLOB d'oracle.
    Mais avant je dois d'abord avoir son contenue dans un inputStream (j'ai fait pas mal de recherche mais j'ai pas réussi à trouver).
    Merci de m'indiquer comment puis-je avoir le contenue du fichier excel.
    Par avance merci pour votre aide.

  2. #2
    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
    Bah vu que tu utilises POI et de fait probablement la classe HSSFWorkBook, tu as une méthode de cette classe qui a pour nom getBytes, et qui te renvoie un tableau de bytes correspondant à ton document excel.
    Pour obtenir un InputStream il te suffit d'utiliser un ByteArrayInputStream en lui passant le résultat du getBytes en paramètre du contrcuteur.

    Voilà.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 43
    Par défaut
    Salut,
    Je suis tout à fait d'accord avec Sinok, voici un petit bout de code afin de répondre précisément à ta question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    InputStream inputStream2 = new ByteArrayInputStream(workbook.getBytes());
    Au fait, si tu intègres tout ça dans ta base de données Oracle, il faut vérifier que les tablespaces soient bien taillés...
    Surtout si tu stockes beaucoup d'enregistrements.
    Côté perfs, Oracle tient très bien la route, heureusement !

    __________________
    http://blog.ostyn.fr

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Bonjour,
    MErci pour vos réponse, ça marche avec le wb.getBytes(), mais le problème que j'ai c'est que le fichier que je veux enregistrer n'a pas de limites sur la taille, je peux même avoir un fichier de 2 ou 3 GO.
    ça va me poser problème si j'enregistre par fois 10 blobs simultanément?.
    Merci pour votre aide.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 10
    Par défaut
    L'utilisation de la méthode getBytes() est déconseillé et peut entrainer des corruptions de fichiers avec Excel ( avec Open Office ca marche). Dans la documentation officielle, il faut utiliser la méthode write(OutputStream).
    Et en effet quand on va voir le code source de cette méthode on voit bien qu'elle ne fait pas que récupérer les bytes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     public void write(OutputStream stream)
                throws IOException
        {
            byte[] bytes = getBytes();
            POIFSFileSystem fs = new POIFSFileSystem();
     
            fs.createDocument(new ByteArrayInputStream(bytes), "Workbook");
     
            if (preserveNodes) {
                List excepts = new ArrayList(1);
                excepts.add("Workbook");
                copyNodes(this.poifs,fs,excepts);
            }
            fs.writeFilesystem(stream);
            //poifs.writeFilesystem(stream);
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSL-FO]comment convertir un ficheir XML en PDF
    Par k-eisti dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 04/12/2007, 12h20
  2. Convertir les fichers Excel en pdf et imprimer les pdf
    Par nautygirl dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/10/2007, 19h28
  3. convertir en format excel
    Par mapmip dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 22/03/2007, 14h10
  4. vb6 Convertir une fichier Excel en DBF (urgent)
    Par mqsi dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/01/2007, 15h30
  5. [MySQL] convertir un fichier excel(*.csv) en un (*.sql)
    Par rhani2010 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/10/2006, 19h39

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