Java excel

souissi12 Messages postés 9 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 17 mai 2009 - 24 avril 2009 à 22:22
souissi12 Messages postés 9 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 17 mai 2009 - 28 avril 2009 à 16:28
J'utilise cette classe java pour rassembler trois fichiers excels(chacun contient une feuille) dans un seul fichier excel en sortie(contenant trois feuilles), mais le problème ce qu'aprés l'exécution je ne trouve dans le fichier de sortie(classeur1) que le premier fihier les autres n'ont pas été recopié malgré que le traitement s'est répété pour les trois fichier dans la boucle for
est ce que quelqu'un peut m'aider à détecter ou est le problème? et comment le corriger?
c'est trés urgent
Merci beaucoup.

voici le code:

package rassemblage.src;

import java.io.*;
import java.nio.channels.*;
import java.util.*;

class JoinerCore extends Observable implements Runnable {
    Vector m_list_files; //Chemin de tout les fichiers à rassembler
    String m_output_file_path; //Chemin du fichier de sortie
    FileOutputStream m_output_file; //Flux sur le fichier de sortie
    FileInputStream m_current_input_file; //Flux sur le fichier courant à assembler
    byte [] m_tmp; //Tampon contenant le fichier courant, utilisé par la méthode sans le paquetage NIO
    boolean m_stop; //Drapeau pour savoir si le rassemblement doit être arrété
    float m_end_size = 0; //Taille finale que doit avoir le fichier de sortie
    float m_current_size = 0; //Taille courante du fichier de sortie
    float m_percentage_progress = 0; //Pourcentage de progression du rassemblement
   
    JoinerCore(Vector list_files, String output_file_path) {
        m_list_files = list_files;
        m_output_file_path = output_file_path;
        m_stop = false;
    }
    public void run() {
int num_files = m_list_files.size();   
        System.out.println("size           est  "+num_files);
        FileChannel source = null;
        FileChannel dest = null;
        String path_current_source;
if((num_files > 0) && (m_stop == false)) {           
            try {
                System.out.println("debut try ouverture fich sortie");

                //On ouvre le fichier de sortie               
                m_output_file = new FileOutputStream(m_output_file_path);
                dest = m_output_file.getChannel();
                System.out.println("debut try ouverture fich entrée");

                //On ouvre tout les fichiers à assembler et on copie leur contenu dans le fichier de sortie                for(int counter 0; (counter < num_files) && (m_stop false); counter++) {
                    //On ouvre le fichier à assembler
                    System.out.println("*****************************debut for*****"+ counter);

                    path_current_source=(String) m_list_files.elementAt(counter);
                    System.out.println("path current source   "+path_current_source);
                    m_current_input_file = new FileInputStream(path_current_source);
                    source = m_current_input_file.getChannel();
                    System.out.println("source  "+source);

                   
                    try {
                        System.out.println("debut try transfert");

                        //On transfert le contenu du fichier à la fin du fichier de sortie
                        source.transferTo(0, (int)source.size(), dest);
                        m_current_size = dest.size();
                        System.out.println("fin try transfert");

                    }
                    catch (IOException exception) {
                        System.out.println("catch      "+path_current_source);

                        System.out.println(exception.getMessage());
                    }
                    try {
                        source.close();
                        m_current_input_file.close();
                       

                        setChanged();
                        notifyObservers(new Float(m_percentage_progress));
                    }
                    catch (IOException exception) {
                        System.out.println(exception.getMessage());
                    }
                }
                try {
                    dest.close();
                    m_output_file.close();
                }
                catch (IOException exception) {
                    System.out.println(exception.getMessage());
                }
            }
            catch(FileNotFoundException exception) {
                System.out.println("Impossible d'ouvrir le fichier : " + m_output_file_path);
                System.out.println(exception.getMessage());
            }
        }       
       

    }

et le main

public static void main(String[] args) {
        System.out.println("debut main");

        Vector v=new Vector<String>();

        String url1= "src/Clas1.xls";
        String url2= "src/Clas2.xls";
        String url3= "src/Clas3.xls";
       
        v.addElement(url1);

        v.addElement(url2);
        v.addElement(url2);

        System.out.println("debut instanc");

        // TODO Auto-generated method stub
        JoinerCore j = new JoinerCore(v,"src/Classeur1.xls");
        System.out.println("debut run");

        j.run();
}

5 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
25 avril 2009 à 00:03
Pour les trucs "c'est trés urgent" c'est par là : http://emploi.codes-sources.com/

Sinon, pour avoir de l'aide, tu peux commencer par dire bonjour (cf google pour la définition) et poster au bon endroit, même si qq part la rubrique "un bug sur codes sources" semble fort adaptée

Kohntark -
0
souissi12 Messages postés 9 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 17 mai 2009
25 avril 2009 à 07:28
merci,
J'ai déja fait plusieurs System.out.println("msg") que j'ai enlevés du code que j'ai mis, il n'y a aucun problème dans l'exécution jusqu'a la fin du programme  et  j'ai déja obtenu ce résultat au console:
debut traitement
debut try ouverture fich sortie
debut try ouverture fich entrée
*****************************debut for*****0
path current source   src/Clas1.xls
source  sun.nio.ch.FileChannelImpl@cf2c80
debut try transfert
fin try transfert
*****************************debut for*****1
path current source   src/Clas2.xls
source  sun.nio.ch.FileChannelImpl@30c221
debut try transfert
fin try transfert
*****************************debut for*****2
path current source   src/Clas3.xls
source  sun.nio.ch.FileChannelImpl@119298d
debut try transfert
fin try transfert
fin run
  c'est à dire le traitement s'est effectué pour les trois fichiers(dans la boucle for) mais dans le fichier de sortie classeur1.xls je ne trouve que le premier fichier clas1.xls
C'est pour cela je me bloque
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
25 avril 2009 à 12:50
Bonjour,

Même remarque que kohntark.

Tu as utilisé ce source (JoinerCore) ? Il faut que tu analyse son code ou que tu mettes des traces dedans. Ou que tu entres en debug dedans. Manifestement c'est l'origine du souci.

[ Déplacé sur javafr ]
0
souissi12 Messages postés 9 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 17 mai 2009
25 avril 2009 à 17:15
Merci,
oui j'ai utilisé cette source.
j'ai fait un débogage  mais je ne sas pas exactement ou est le problème je pense qu'il faut ajouter un code dedan pour fixer le sheet suivant ou quelque chose comme ça. Je me bloquue
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
souissi12 Messages postés 9 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 17 mai 2009
28 avril 2009 à 16:28
BONJOUR
j'ai modifié le code en ajoutant la création de sheet excel pour forcer le transfert du flux à se fixer dans la sheet1 puis dans la sheet2 etc..
mais toujours j'ai un problème c'est que le transfert et le problème est au niveau de cette instruction:
                            dest=(FileChannel) sheet;
dest est déja initialisé à null et resté à null en fait voici le message d'erreur que j'ai obtenu:

def var
size           est  3
debut traitement
*****************************debut for*****0
debut try ouverture fich sortie
debut try ouverture sheet
fin  workbook
fin ouverture sheet
fin try ouverture sheet1
debut try ouverture fich entrée
path current source   src/Clas1.xls
source  sun.nio.ch.FileChannelImpl@5e3974
debut try transfert
Exception in thread "main" java.lang.NullPointerException
    at rassemblage.src.JoinerCore.run(JoinerCore.java:112)
    at rassemblage.src.execute.main(execute.java:31)

voici le  code source:

package rassemblage.src;

import java.io.*;
import java.nio.channels.*;
import java.util.*;

import java.io.File;
import java.util.Date;
import jxl.*;
import jxl.write.*;

import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.WritableWorkbook;

class JoinerCore extends Observable implements Runnable {
    Vector m_list_files; //Chemin de tout les fichiers à rassembler
    String m_output_file_path; //Chemin du fichier de sortie
    FileOutputStream m_output_file; //Flux sur le fichier de sortie
    FileInputStream m_current_input_file; //Flux sur le fichier courant à assembler
    byte [] m_tmp; //Tampon contenant le fichier courant, utilisé par la méthode sans le paquetage NIO
    boolean m_stop; //Drapeau pour savoir si le rassemblement doit être arrété
    float m_end_size = 0; //Taille finale que doit avoir le fichier de sortie
    float m_current_size = 0; //Taille courante du fichier de sortie
    float m_percentage_progress = 0; //Pourcentage de progression du rassemblement
   
    JoinerCore(Vector list_files, String output_file_path) {
        m_list_files = list_files;
        m_output_file_path = output_file_path;
        m_stop = false;
    }

   
    public void run() {
//        Sert a calculer la durée d'assemblage
//        Chrono chrono = new Chrono();
//        chrono.start();
        System.out.println("def var");
    //new//    setEndSize();
        int num_files = m_list_files.size();   
        System.out.println("size           est  "+num_files);
        FileChannel source = null;
        FileChannel dest = null;
        String path_current_source;
       
//        Workbook workbook = null;
        //Sheet sheet = workbook.getSheet(0);
       
        System.out.println("debut traitement");
        int i=0;

        if((num_files > 0) && (m_stop == false)) {           
           

                //On ouvre tout les fichiers à assembler et on copie leur contenu dans le fichier de sortie                for(int counter 0; (counter < num_files) && (m_stop false); counter++) {
                    //On ouvre le fichier à assembler
                    System.out.println("*****************************debut for*****"+ counter);
                   
                    try {
                        System.out.println("debut try ouverture fich sortie");

                        //On ouvre le fichier de sortie               
                        //m_output_file = new FileOutputStream(m_output_file_path);
                        //dest = m_output_file.getChannel();
                        System.out.println("debut try ouverture sheet");
                        try {
                            //File file = new File("src/Classeur2.xls");
                            WritableWorkbook workbook =Workbook.createWorkbook(m_output_file);
                            System.out.println("fin  workbook");

                            WritableSheet sheet = workbook.getSheet("sheet1");
                            //dest=(FileChannel)workbook;
                            dest=(FileChannel) sheet;
                           
                               //System.out.println("la size de dest est  "+dest.size());

                            //dest = m_output_file.getChannel();
                                   i++;
                                   System.out.println("fin ouverture sheet");

                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

                   
                        System.out.println("fin try ouverture sheet"+i);

                            System.out.println("debut try ouverture fich entrée");
                        

                    //new//path_current_source = ((FileItem)m_list_files.elementAt(counter)).getPath();
                    path_current_source=(String) m_list_files.elementAt(counter);
                    System.out.println("path current source   "+path_current_source);
                    m_current_input_file = new FileInputStream(path_current_source);
                    source = m_current_input_file.getChannel();
                    System.out.println("source  "+source);
                    }

                    catch(FileNotFoundException exception) {
                        System.out.println("Impossible d'ouvrir le fichier : " + m_output_file_path);
                        System.out.println(exception.getMessage());
                    }
                    try {
                        System.out.println("debut try transfert");

                        //On transfert le contenu du fichier à la fin du fichier de sortie
                        System.out.println("size  de  dest "+(int)dest.size());
                       
                        source.transferTo(0, (int)source.size(), dest);
                        m_current_size = dest.size();
                        System.out.println("la  size courante    "+m_current_size);
                        m_end_size=m_end_size+m_current_size;
                       
                       
                        System.out.println("la  size finale    "+m_end_size);

                        System.out.println("fin try transfert");
                                            }
                    catch (IOException exception) {
                        //System.out.println("catch      "+path_current_source);

                        System.out.println(exception.getMessage());
                    }
                    try {
                        source.close();
                        m_current_input_file.close();
                       
                    //new    //setPercentageProgress();
                        setChanged();
                        notifyObservers(new Float(m_percentage_progress));
                    }
                    catch (IOException exception) {
                        System.out.println(exception.getMessage());
                    }
               
                try {
                    dest.close();
                    m_output_file.close();
                }
                catch (IOException exception) {
                    System.out.println(exception.getMessage());
                }
           
           
                }//fin  for
        }    //fin if   
       
        System.out.println("fin run");

    }

   
 
}
0
Rejoignez-nous