DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions standard / Fonctions de gestion des archives
  • Exemple 1 : Recherche d'un fichier dans une archive dont le chemin contient la chaîne de caractères "Temp"
  • Exemple 2 : Recherche d'un fichier d'un type donné dans une archive
  • Exemple 3 : Recherche d'un fichier d'un type donné dans une archive xlsx
zipChercheFichier (Exemple)
Exemple 1 : Recherche d'un fichier dans une archive dont le chemin contient la chaîne de caractères "Temp"
Etats et Requêtes Le code suivant permet de rechercher un fichier dans une archive. La recherche est générique : le chemin des fichiers trouvés contient "Temp". Chaque fichier trouvé s'affichera dans une table. Le nombre de fichiers dont le chemin contient le mot "Temp" est compté.
// Déclaration et initialisation des variables
NomArchive est une chaîne = "MonArchive"
FichierRech est une chaîne = "Temp"
UneListeDeFichiers est une chaîne
ExtraitFichier est une chaîne
ResFichierTrouvé est un entier = 1
NbFichier est un entier
Indice est un entier = 1
Compteur est un entier = 0
 
// Liste des fichiers de l'archive
UneListeDeFichiers = zipListeFichier(NomArchive)
 
// Nombre de fichiers contenus dans l'archive
NbFichier = zipNbFichier(NomArchive)
 
POUR Indice À NbFichier
// Recherche du fichier dans une archive (recherche générique)
ResFichierTrouvé = zipChercheFichier(NomArchive, FichierRech, Faux)
// Extraction du chemin du fichier trouvé
ExtraitFichier = ExtraitChaîne(UneListeDeFichiers, ResFichierTrouvé, RC)
// Affichage du fichier trouvé dans une table
TableAjoute(TABLE_TableFichier, ExtraitFichier)
// Comptage du nombre de fichiers dont le chemin contient "Temp"
Compteur = Compteur + 1
FIN
 
// Affichage du nombre de fichiers dont le chemin contient "Temp"
Info("Nombre de fichiers dont le chemin contient Temp : ", Compteur)
Exemple 2 : Recherche d'un fichier d'un type donné dans une archive
Etats et Requêtes Le code suivant permet de rechercher un fichier de type ".DOC" dans une archive. Chaque fichier trouvé s'affichera dans une table mémoire (nommée "TABLE_TableArchive").
// Déclaration et initialisation des variables
NomArchive est une chaîne = "MonArchive"
FichierRech est une chaîne = ".DOC"
UneListeDeFichiers est une chaîne
ExtraitFichier est une chaîne
ResFichierTrouvé est un entier = 1
NbFichier est un entier
Indice est un entier = 1
 
// Liste des fichiers de l'archive
UneListeDeFichiers = zipListeFichier(NomArchive)
 
// Nombre de fichiers contenus dans l'archive
NbFichier = zipNbFichier(NomArchive)
 
POUR Indice À NbFichier
// Recherche du fichier dans une archive (recherche générique)
ResFichierTrouvé = zipChercheFichier(NomArchive, FichierRech, Faux)
SI zipExtraitChemin(NomArchive, ResFichierTrouvé, zipExtension) = ".DOC" ALORS
 // Extraction du chemin du fichier trouvé
 ExtraitFichier = ExtraitChaîne(UneListeDeFichiers, ResFichierTrouvé, RC)
 // Affichage du fichier trouvé dans une table
 TableAjoute(TABLE_TableArchive, ExtraitFichier)
FIN
FIN
Exemple 3 : Recherche d'un fichier d'un type donné dans une archive xlsx
Ce code permet de rechercher un fichier dans une archive xlsx, de le modifier et de le remplacer dans l'archive.
// Nom physique du fichier (les fichiers xlsx sont des ZIP !)
sNomFichierXlsx est une chaîne = fRepDonnées() + "\Niveau 1.xlsx"
// Nom logique pour utilisation avec les fonctions Zip
sZipFichierXlsx est une chaîne = "ZipFichierXlsx"
 
// Ouverture
bZipOuvert est un booléen
bZipOuvert = (zipOuvre(sZipFichierXlsx, sNomFichierXlsx, zipEcriture)=0)
// Ouverture OK ?
SI PAS bZipOuvert ALORS
Erreur("Echec de l'ouverture de la feuille Excel", ErreurInfo())
RETOUR
FIN
// Recherche d'un fichier dans le ZIP
nIndiceFichiersheet1xmlrels est un entier
// Recherche à l'identique en spécifiant le chemin
nIndiceFichiersheet1xmlrels = zipChercheFichier(sZipFichierXlsx, ...
"xl\worksheets\_rels\sheet1.xml.rels", Vrai)
// Fichier trouvé dans le zip ?
SI nIndiceFichiersheet1xmlrels < 1 ALORS
// Fichier non trouvé
Erreur("Fichier non trouvé dans le fichier XLSX")
SINON
// Récupère le contenu du fichier trouvé
bufFichiersheet1xmlrels est un Buffer
bufFichiersheet1xmlrels = zipExtraitFichier(sZipFichierXlsx, ...
nIndiceFichiersheet1xmlrels, zipEnMémoire)
// Ce fichier est un XML, on le charge dans une variable XMLDocument
xmlSheet1 est un xmlDocument = XMLOuvre(bufFichiersheet1xmlrels, depuisChaîne)
SI ErreurDétectée = Vrai ALORS
Erreur("Impossible de charger le fichier XML se trouvant dans le fichier XLSX", ...
ErreurInfo())
SINON
// Modification des liens pour remplacer des chemins
POUR nNumLien = 1 _À_ xmlSheet1.Relationships.Relationship..Occurrence
xmlSheet1.Relationships.Relationship[nNumLien]:Target = ...
Remplace(xmlSheet1.Relationships.Relationship[nNumLien]:Target, ...
"file:///\\ancienserveur\", "file:///\\nouveauserveur\", SansCasse)
FIN
// Récupère le XML modifié dans le buffer
bufFichiersheet1xmlrels = XMLConstruitChaîne(xmlSheet1)
// Supprime le fichier existant dans le XLSX (dans le ZIP)
SI zipSupprimeFichier(sZipFichierXlsx, nIndiceFichiersheet1xmlrels) <> 0 ALORS
Erreur("Impossible de supprimer le fichier XML se trouvant dans le fichier XLSX "+ ...
"pour le mettre à jour", ErreurInfo())
SINON
// On met le nouveau fichier à la place
SI zipAjouteFichier(sZipFichierXlsx, bufFichiersheet1xmlrels, ...
zipEnMémoire, "xl\worksheets\_rels\sheet1.xml.rels") <> 0 ALORS
Erreur("Impossible d'ajouter le nouveau fichier XML se trouvant " + ...
"dans le fichier XLSX pour le mettre à jour", ErreurInfo())
SINON
Info("Modifications effectuées avec succès")
FIN
FIN
FIN
FIN
 
// Dans tous les cas à la fin
FIN:
// Si le zip du xlsx est ouvert on le ferme
SI bZipOuvert ALORS zipFerme(sZipFichierXlsx)
 
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale