Renommage de fichier avec valeur d'un excel

L’auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour, Je me permet de demander votre aide car je suis totalement perdu. Je vous explique : J’ai un fichier exel qui comporte 44893 lignes et 21 colonnes, à côté j’ai un dossier avec plusieurs images, ce que je voudrais faire c’est renommer les images présent dans le dossier avec un nouveau nom que j’aurais extrait d’une colonne du fichier excel, bien sur pour éviter toute confusion je souhaite comparer le nom des fichiers dans le répertoire avec celui présent dans une des colonnes du fichier excel pour être que le programme rename bien le bon fichier images. Le souci c’est que suis totalement perdu dans le parcours du excel et du dossier car des que je sors les valeurs nouveau, ref et nomCourt de leur boucle for bah il perdent leurs valeur et je n’arrive pas à trouver la boucle qui leurs permettrait de garder leurs valeur et donc la condition ne peut jamais faire car nomCourt et ref n’ont jamais la même valeur, donc si quelqu’un voudrait bien m’aider, ça serais gentil car c’est assez important, j’ai fais mon maximum mais la j’ai plus trop d’idées En vous remerciant par avance et vous souhaitant une bonne journée PS : Je travaille sur plusieurs projet à la fois ^^

public class Main {
    
    public static void main(String[] args) throws IOException, BiffException {
    
            //Ouverture et lecture du fichier excel
            Workbook workbook = Workbook.getWorkbook(new File("E:\\Base_nouvelles_images_Jofl_complète_TRAVAIL_marco_fait2.xls"));
            //Acces a la premiere page du fichier excel
            Sheet sheet = workbook.getSheet(0);
            // Nouveau permet de recuperer le nouveau nom des fichiers 
            String nouveau;
            // Initialisation des variables
            String ref = "";
            Cell cell = null;
            Cell cell2 = null;
            // NomCourt est la variable qui va contenir les nom des fichiers present dans le repertoire sans les extension
            String nomCourt = "";
            
            // J'ouvre le repertoire et je met tous les fichiers qui a dedans dans un tableau de type File
            File dossier = new File("E:\\Images_2");
            File[] liste = dossier.listFiles();
            
            // Premiere boucle for permettant de parcourir le fichier excel
                for (int i = 1; i < sheet.getRows(); i++) {
                     cell = sheet.getCell(7,i);
                     nouveau = cell.getContents()+".jpg";
                     cell2 = sheet.getCell(5,i);
                     ref = cell2.getContents();
                    }
                  
            // Deuxieme boucle for permettant de parcourir le tableau de fichier
                    for(int j = 0; j < liste.length; j++) {
                        if (liste[j].isFile()) { 
            // Recupere le nom des fichiers present dans le tableau sans leur extension 
                            nomCourt = (liste[j].getName() != null) ? liste[j].getName().substring(0,liste[j].getName().indexOf('.')) : "";
                        } 
                    }
                 // Condition qui verifie que le nom des fichiers recuperer dans le excel qui correspond avec les nom des fichiers present dans le repertoire
            // pour que le nouveau nom du fichier correspond bien a son ancien nom dans le excel
                if(ref == nomCourt) {
                    // Je rename le nom des anciens fichier par le nouveau 
                    /*Path ancienChemin = Paths.get("E:\\Images_2\\"+ancien);          
                    Files.move(ancienChemin, ancienChemin.resolveSibling(nouveau));
                    System.out.println(ancien+" renomme => " +nouveau);*/
                }
            workbook.close();
    }
}

Édité par Theo V

+0 -0
Auteur du sujet

Bonjour Petit up : J’ai essayé de faire beaucoup plus simple et j’en suis arrivé à ca :

public class Main {
    
    public static void main(String[] args) throws IOException, BiffException {
    
            Workbook workbook = Workbook.getWorkbook(new File("E:\\Base_nouvelles_images_Jofl_complète_TRAVAIL_marco_fait2.xls"));
            Sheet sheet = workbook.getSheet(0);
    
            Cell cell = null;
            Cell cell2 = null;
            int j = 1;
            
            File dossier = new File("E:\\i");
            File[] liste = dossier.listFiles();
            
            for (int i = 0; i < liste.length; i++) {
                if (liste[i].isFile()) { // Si c'est un fichier
                    // Recupere les fichiers en cours 
                    File f = new File("E:\\i"+liste[i].getName());
                    String extension = "";
                    String ancien = liste[i].getName();
                    
                    // Verifie que l'extension est un point .jpg
                    int index = ancien.lastIndexOf('.');
                    if (index > 0) {
                        extension = ancien.substring(index+1);
                        //System.out.println(extension);
                    }
                        while(j < sheet.getRows() && i < liste.length) {
                            String nomCourt = (liste[i].getName() != null) ? liste[i].getName().substring(0,liste[i].getName().indexOf('.')) : "";
                            cell = sheet.getCell(7,j);
                            String nouveau = cell.getContents()+".jpg";
                            cell2 = sheet.getCell(5,i);
                            String ref = cell2.getContents();
                            //System.out.println(nomCourt);
                            //if (nomCourt.equals(ref)) {
                            Path ancienChemin = Paths.get("E:\\i\\"+liste[i].getName());  
                            //System.out.println(ancienChemin);
                            Files.move(ancienChemin, ancienChemin.resolveSibling(nouveau));                      
                            System.out.println(liste[i].getName()+" renomme => " +nouveau);
                        //}
                        //else {
                            //System.out.println(ancien+" n'est pas un fichier image");
                       //   }
                             j++;
                             i++;
                   }
                        
                }
            }   
            workbook.close();
    }
}

J’ai toujours le même problème, il ne me rentre dans le dernier if, et je pense savoir pourquoi pour essayer de regler ce problème j’ai tenter de faire ça :

/*if(sheet.getCell(5,j).equals(nomCourt)){
                                cell2= sheet.getCell(5,i);
                                String ref = cell2.getContents();   
                                System.out.println(ref);
                            } else {
                                    System.out.println("Les references ne correspondent pas \n");
                                }*/

Mais sans succés ce que je voudrais c’est qui me prend les references dans le excel qui correspondent aux noms présent dans le repertoire, si quelqu’un à une solution ou autre Merci d’avance

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte