[Résolu][Calc] Ouvrir fichier dans archive compressée zip

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Avatar de l’utilisateur
Schnee
Membre OOrganisé
Membre OOrganisé
Messages : 77
Inscription : 03 déc. 2012 21:44

[Résolu][Calc] Ouvrir fichier dans archive compressée zip

Message par Schnee »

Bonsoir tout le monde "Pour la balise, j'ai un doute, Calc ou Basic ?"

Alors, je me posais une question (de fainéant !!!). Peut on avec une macro ouvrir un fichier calc qui se trouve dans une archive compressée de type 7zip ?

En gros, pour le moment lorsque je récupère les mises à jour de données, elles sont dans un fichier calc qui se trouve lui même dans une archive 7zip.

Ces mises à jour proviennent d'une autre application qui me transmet le fichier dans une archive compressée et celle-ci contient uniquement ce fichier et rien d'autre.

Donc, m'étant déjà énormément simplifié la vie grâce aux macros, je voulais voir si je pouvais encore économiser deux, trois clics par heure !!!!

J'ai cherché, mais rien trouvé pour le moment. J'avais trouvé un modèle pour mettre un fichier dans une archive, mais il faisait appel à l'application 7zip.

J'ai plus dans l'optique, si par miracle ça fonctionne, d'utiliser le filepicker et se rendre dans l'archive comme avec l'explorateur de Windows 10, sélectionner le fichier et le lire.

Naturellement aucune modification ou enregistrement n'est faîte sur ce fichier. Seule une lecture des cellules est effectuée.

Au pire, même si vous avez juste un lien pour essayer de me mettre sur une piste, je suis preneur !!!

Merci à toutes et à tous.

A bientôt

P.S. Ma demande porte sur n'importe quel fichier avec n'importe quelle donnée. Tant qu'il s'agit d'un "ods". Du coup j'ai pas mis de fichier. Mais si vous jugez utile que j'en rajoute un, aucun problème.
 Ajout : Edit 001
J'oubliais. Ce qui me laisse penser que cela est possible, c'est le paragraphe ici: https://wiki.openoffice.org/wiki/Docume ... od_Options
qui dit:
Compression de fichiers
Comme XML utilise des fichiers texte standard, les fichiers obtenus sont généralement très volumineux. C'est pourquoi OpenOffice.org les compresse et les enregistre sous forme de fichier ZIP. Grâce à une option de la méthode storeAsURL, l'utilisateur peut enregistrer directement les fichiers XML d'origine. Pour plus d'informations, consultez la section Options de la méthode storeAsURL.
Donc j'en déduis, peut être par erreur :tesfou: , que si libreoffice utilise l'empacteur pour les fichiers xml, ne peut il pas faire l'inverse en regardant immédiatement à l'intérieur d'une archive :mrgreen:

Pour l'instant j'utilise ceci. Mais naturellement, ça ne fonctionne pas pour un fichier contenu dans une archive compressée

Code : Tout sélectionner

Classeur001 = stardesktop.loadComponentFromUrl(Dlg001.GetControl("TxtUrlNomClasseur001Comparaison").Text, "_blank",0, aProps())
LesFeuillesClasseur = Classeur001.Sheets
 
Dernière modification par Schnee le 29 janv. 2019 17:36, modifié 1 fois.
LibreOffice Version: 6.0.4.2 (Version obligatoire) - Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Ouvrir fichier calc dans archive compressée zip

Message par Dude »

L'utilisation des fonctions ZIP a déjà fait l'objet de sujets.
Au vu du nombre de messages que tu as posté, faire au préalable une recherche serait un minimum.
https://forum.openoffice.org/fr/forum/v ... ess%2A+zip
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Calc] Ouvrir fichier dans archive compressée zip

Message par Hubert Lambert »

Bonjour,

Voici un exemple (adapter évidemment le chemin du fichier zip). Ce code ne vaut que si le zip ne contient qu'un fichier calc :

Code : Tout sélectionner

sub main
    url = convertToURL("C:\Users\xxx\Desktop\Schnee.zip")
    ouvrir_ods_dans_zip(url)
end sub

sub ouvrir_ods_dans_zip(zipurl)
    zipaccessor = createUnoService("com.sun.star.packages.zip.ZipFileAccess")
    zipaccessor.initialize(array(zipurl))
    stream = zipaccessor.getStreamByPattern("*.ods")
    dim a()
    stream.readBytes(a, stream.available())
    stream.closeInput()
    byteseq = com.sun.star.io.SequenceInputStream.createStreamFromSequence(a)
    dim props(1) as new com.sun.star.beans.PropertyValue
    props(0).Name = "InputStream"
    props(0).Value = byteseq
    props(1).Name = "ReadOnly"
    props(1).Value = True
    doc = stardesktop.loadComponentFromURL("private:stream", "_default", 0, props())
    lesfeuilles = doc.Sheets
    'xray lesfeuilles
end sub
Cordialement.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Schnee
Membre OOrganisé
Membre OOrganisé
Messages : 77
Inscription : 03 déc. 2012 21:44

Re: [Calc] Ouvrir fichier dans archive compressée zip

Message par Schnee »

Bonsoir @Hubert Lambert

Super !!!!. Je vais tester ça fin de semaine. D'après la lecture de la macro cela correspond exactement à ma recherche.

Encore merci pour cette aide et le temps passé pour me répondre.

@Dude

Merci également, mais comme j'avais indiqué dans mon message, j'avais déjà effectué des recherches pour essayer de trouver par même. J'ai même marqué ceci :
J'avais trouvé un modèle pour mettre un fichier dans une archive, mais il faisait appel à l'application 7zip.
Mais ces solutions qui font appel au shell ne m'arrangent pas vraiment... (Le pourquoi ??, je pense que ça se passe dans ma tête. LOL :fou: )

Peut importe, je sens que la Macro magique de Monsieur @Hubert Lambert va fonctionner :super:

Je reviens vers vous fin de semaine (ou peut être avant) pour dire si j'ai réussi à la faire fonctionner.

A bientôt
 Ajout : Edit du 29/01/2018:

Je vous remercie à nouveau @Hubert Lambert. Grâce à votre aide j'ai réussi à me faire ma petite bricole qui me permet de gagner encore quelques secondes chaque heures !!!!
Bonne continuation à vous. 
Dernière modification par Schnee le 29 janv. 2019 17:36, modifié 1 fois.
LibreOffice Version: 6.0.4.2 (Version obligatoire) - Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Ouvrir fichier dans archive compressée zip

Message par Dude »

Schnee a écrit :Mais ces solutions qui font appel au shell ne m'arrangent pas vraiment.
Arrête de lire en diagonale, dans le lien donné, Jacky Z donne un script faisant appel au service com.sun.star.packages.Package.
Bref, aucun rapport avec le Shell...