Enregistrement fichier

Fermé
JulienLafitte - 6 févr. 2019 à 19:04
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 7 févr. 2019 à 19:35
Bonjour,
J'ai plusieurs fichiers au format libreoffice dans un dossier. Leurs noms se suivent tous. Le premier fichier est donc le 0001.ods, le deuxième est 0002.ods, le troisieme 0003.ods etc.....jusqu'au fichier 1028.ods.
J'aimerai convertir ces fichiers au format xls de Excel mais la seule solution que j'ai trouve est de les ouvrir un par un et de faire enregistrer sous et changer l'extension. Existe t'il un code pouvant ouvrir tous les fichiers et les enregister sous automatiquement au format xls avec le meme nom?
Merci!



Configuration: Windows / Chrome 71.0.3578.98
A voir également:

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
6 févr. 2019 à 19:24
Bonjour,

Si c'est à faire une fois, le plus simple serait d'utiliser les classes Desktop et Robot et faire un programme qui va ouvrir le fichier tout seul, cliquer aux bons endroits pour enregistrer au nouveau format, fermer le fichier et recommencer.

Si ça marche pour 2 ou 3 fichiers de suite, ça fonctionnera pour 1028...
0
Merci pour ta réponse,
Je n'ai jamais coder en Java et j'avoue que je suis un peu perdu par rapport à la méthode dont tu me parles...Est ce que tu peux m'aider et me dire comment je dois m'y prendre s'il te plait? Pas le code entier bien sur mais une petite aide ne serait pas de refus !
Merci beaucoup!
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015 > JulienLafitte
7 févr. 2019 à 00:07
Un exemple qui fonctionne chez moi, mais il faudra sûrement faire des réglages selon ta version d'Excel (les raccourcis clavier changent peut être), la taille des fichiers et la puissance de ta machine (pour augmenter ou modifier les temps d'attente entre chaque action).

Remarque : je pars du principe que C:/monDossier ne contient que des fichiers .ods à convertir au départ, et qu'à l'arrivée c'est dans ce dossier que l'on enregistre les .xlsx
Dans un premier temps je te conseilles de tester dans un dossier avec 3 ou 4 fichiers seulement pour vérifier que ça fonctionne bien avant de le lancer sur tes 1028 fichiers.

import java.awt.Desktop;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.io.File;

public class OdsToXlsx {
    public static void main(String[] args) throws Exception {
        Desktop desktop = Desktop.getDesktop();
        Robot robot = new Robot();

        File[] odsFiles = new File("C:/monDossier").listFiles(); // on liste tous les fichiers du dossier
        for (File odsFile : odsFiles) { // pour chaque fichier

            desktop.open(odsFile); // on ouvre le fichier avec Excel
            Thread.sleep(10_000); // on attend 15 secondes qu'Excel s'ouvre

            robot.keyPress(KeyEvent.VK_F12); // on appuie sur F12 (enregistrer sous)
            robot.keyRelease(KeyEvent.VK_F12);
            Thread.sleep(2_000);

            robot.keyPress(KeyEvent.VK_TAB); // on appuie sur Tab (passe sur le type de fichier)
            robot.keyRelease(KeyEvent.VK_TAB);
            Thread.sleep(1_000);

            robot.keyPress(KeyEvent.VK_DOWN); // on appuie sur Flèche du bas (ouvre la liste des types de fichier)
            robot.keyRelease(KeyEvent.VK_DOWN);
            Thread.sleep(1_000);

            robot.keyPress(KeyEvent.VK_PAGE_UP); // on appuie sur Page Up (choisit le 1er type de fichier, XLSX)
            robot.keyRelease(KeyEvent.VK_PAGE_UP);
            Thread.sleep(1_000);
            robot.keyPress(KeyEvent.VK_ENTER); // on appuie sur Entrée (sélection du type de fichier)
            robot.keyRelease(KeyEvent.VK_ENTER);
            Thread.sleep(1_000);

            robot.keyPress(KeyEvent.VK_ENTER); // on appuie sur Entrée (enregistrer sous)
            robot.keyRelease(KeyEvent.VK_ENTER);
            Thread.sleep(10_000); // on attend 15 secondes que le fichier s'enregistre

            robot.keyPress(KeyEvent.VK_CONTROL); // on appuie sur Ctrl+W (ferme le fichier)
            robot.keyPress(KeyEvent.VK_W);
            robot.keyRelease(KeyEvent.VK_W);
            robot.keyRelease(KeyEvent.VK_CONTROL);
            Thread.sleep(1_000);
        }
    }
}
0
Merci KX mais du coup ou doit on mettre ce code? Dans le code du premier fichier du dossier?
0
Je l'ai insérer dans la macro de mon 1er fichier LibreOffice et j'ai une première erreur :
Erreur de syntaxe BASIC.
Attendu : ,.
Cette erreur apparaît au niveau de "desktop" car c'est ce mot qui est surligné.
0
JulienLafitte > JulienLafitte
7 févr. 2019 à 08:28
Dans la macro, si je comprends bien il faut ouvrir les fichiers avec Excel mais j'ai un message d'erreur qui apparait si je le fais manuellement qui me dit que l’extension et le format du fichier ne correspondent pas (extension : xls et format : libreoffice)
0