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"
WEBDEV - Code ServeurAjax 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
WEBDEV - Code ServeurAjax 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