souissi12
Messages postés9Date d'inscriptionjeudi 23 avril 2009StatutMembreDernière intervention17 mai 2009
-
24 avril 2009 à 22:22
souissi12
Messages postés9Date d'inscriptionjeudi 23 avril 2009StatutMembreDernière intervention17 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.
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
//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");
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
souissi12
Messages postés9Date d'inscriptionjeudi 23 avril 2009StatutMembreDernière intervention17 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
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 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.
souissi12
Messages postés9Date d'inscriptionjeudi 23 avril 2009StatutMembreDernière intervention17 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
souissi12
Messages postés9Date d'inscriptionjeudi 23 avril 2009StatutMembreDernière intervention17 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)
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
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;
//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);