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

OpenOffice & LibreOffice Discussion :

Cppie fichier ods et renommer en zip


Sujet :

OpenOffice & LibreOffice

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 45
    Points : 30
    Points
    30
    Par défaut Cppie fichier ods et renommer en zip
    Bonjour,
    j'ai fai un fonction qui doit copie un fichier ods en changent le format en zip
    mais ça ne marche pas, avec les fichier ods . j'ai tester la meeme fonction avec les fichier odt ça marche bien.
    Si qlq un peut regarder ma fonction et me dire c'est ou le probleme, ça serais cool.
    Voici le code
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    /**
    *urrlDoc  nom du doc   en .ods
    *urlSorti repertoire de sortie
    *NomDocSortie nom de sortie du fichier en .zip
    */
    public void copieDoc(String urrlDoc, String urlSorti,String NomDocSortie) throws Exception{
    		
    		System.out.println("******** DEBUT TRAITEMENT Copie Doc ********");
            OOoConnect OOo = new OOoConnect();
            // connection au service de OOo
            XMultiComponentFactory xMCF = OOo.useConnection();
            XDesktop xDesktop = OOo.getXDesktop();
            XComponentLoader xComponentLoader = (XComponentLoader)UnoRuntime.queryInterface(XComponentLoader.class, xDesktop);
            
            // Ouvrir un doc existant
            PropertyValue[] prop = new PropertyValue[1];
            prop[0] = new PropertyValue();
            prop[0].Name = "Hidden";
            prop[0].Value = Boolean.TRUE;
            
            
            XComponent xComp = xComponentLoader.loadComponentFromURL("file:///"+urrlDoc, "_blank", 0, prop);
            // Charger l'objet XTextDocument
            XTextDocument xTextDoc = (XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, xComp);
            
            //creation du doc ou on met les propietes
            File data = new File(urlSorti+"testOOo.data");
            if (!(data.exists())) {data.createNewFile(); }
            FileInputStream fis = new FileInputStream(data);
            Properties pdata = new Properties();
            pdata.load(fis);
            fis.close();
            
            XReplaceable xReplace = (XReplaceable)UnoRuntime.queryInterface(XReplaceable.class, xTextDoc);
            XReplaceDescriptor xRD = xReplace.createReplaceDescriptor();
           
            Enumeration enum8 = pdata.keys();
            while (enum8.hasMoreElements()){
            	
                   String key = (String)enum8.nextElement();
                   String value = pdata.getProperty(key);
                   
                   xRD.setSearchString(key);
                   xRD.setReplaceString(value);
             
                   xReplace.replaceAll(xRD);
            }//fin while 
                 
            // Enregistrer dans un nouveau fichier avec ses propietes
            PropertyValue[] filterProperties = new PropertyValue[1];
            filterProperties[0] = new PropertyValue();
            filterProperties[0].Name ="Hidden";;
            filterProperties[0].Value = "";
         
            XStorable xStore = (XStorable)UnoRuntime.queryInterface(XStorable.class, xComp);
            xStore.storeToURL("file:///"+urlSorti+NomDocSortie, filterProperties);
             
            // Fermer le document
            XCloseable xClose = (XCloseable)UnoRuntime.queryInterface(XCloseable.class, xComp);
            xClose.close(true);
    		
            //Fermer l'instance OOo
             xDesktop.terminate();
     
           System.out.println("******** FIN DU TRAITEMENT Copi DOc********");
           System.exit(2);
           
    	   }
    le programme bloque au niveau de cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      XReplaceDescriptor xRD = xReplace.createReplaceDescriptor();
    Merci d'avance

  2. #2
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 45
    Points : 30
    Points
    30
    Par défaut [OOo clac] copie de fichier ods et renommer en zip
    en java

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 26
    Points : 21
    Points
    21
    Par défaut
    Je ne sais pas si tu as trouvé une solution à ton problème (depuis le temps)

    En tout cas, si ça peut servir : Les fichiers odt comme ods sont des fichiers zippés contenant un certain nombre de données, la plupart en XML, nécessaire à leur interprétation par les éditeurs correspondants...

    Une simple copie de fichier octet-à-octet peut suffire à faire ce que tu veux faire, plutôt que passer par toute la structure du fichier comme tu veux le faire.

    Voilà une fonction typique que j'ai trouvée sur le net et réadpatée :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
      public static boolean copier( File source, File destination ){
        boolean resultat = false;
        // Declaration des flux
        java.io.FileInputStream sourceFile=null;
        java.io.FileOutputStream destinationFile=null;
        try {
          // Création du fichier :
          destination.createNewFile();
          // Ouverture des flux
          sourceFile = new java.io.FileInputStream(source);
          destinationFile = new java.io.FileOutputStream(destination);
          // Lecture par segment de 0.5Mo
          byte buffer[]=new byte[512*1024];
          int nbLecture;
          while( (nbLecture = sourceFile.read(buffer)) != -1 ) {
            destinationFile.write(buffer, 0, nbLecture);
          }
          // Copie réussie
          resultat = true;
        } catch( java.io.FileNotFoundException f ) {
        } catch( java.io.IOException e ) {
        } finally {
          // Quoi qu'il arrive, on ferme les flux
          try {
            sourceFile.close();
          } catch(Exception e) { }
          try {
            destinationFile.close();
          } catch(Exception e) { }
        }
        return( resultat );
      }
    Tu aurais juste à appeler ta fonction comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    copier(new File("fichier_entree.ods"),new File("fichier_sortie.zip"));
    En remplaçant les objets File par "ceux qui vont bien"

    Tu peux aussi passer par l'ouverture du fichier avec les classes qui sont dans le package java.util.zip, pour décompresser/recompresser à la vollée, si tu as des choses à changer dans les xml... mais ça devient un peu complexe (pas la copie, mais la modification à la vollée )

Discussions similaires

  1. Ouverture d'un fichier ODS
    Par mic79 dans le forum Langage
    Réponses: 1
    Dernier message: 06/03/2009, 17h26
  2. Crash de la base de donnée, fichier .MYD se renomme en .TMD
    Par dad72 dans le forum Administration
    Réponses: 2
    Dernier message: 24/02/2009, 02h52
  3. Réponses: 2
    Dernier message: 01/12/2008, 16h20
  4. copier un fichier et le renommer
    Par Esil2008 dans le forum ANT
    Réponses: 1
    Dernier message: 18/11/2008, 17h53
  5. Comment manipuler les données d'un fichier .ods ?
    Par Kicker dans le forum Débuter
    Réponses: 2
    Dernier message: 29/07/2008, 15h00

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