PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Copie HTML vers Excel xlsDocument
Copie HTML vers Excel xlsDocument
Débuté par Mathieu, 23 jan. 2025 10:46 - Aucune réponse
Posté le 23 janvier 2025 - 10:46
Bonjour, j'ai un code Windev me permettant d'ouvrir des fichiers HTML pré-sauvegarder dans un dossier spécifiques et les copier dans un fichier Excel déjà existant (avec des dizaines de feuilles, mais j'arrive a copié ce que je veux à la bonne feuille pas de soucis la dessus). Toutefois, je galère ENORMEMENT a copier le fichier Html dans mon fichier excel (créer via un xlsDocument). Voici le code :

Procedure OpenAllHtmlFiles(sDossierHTML est une chaîne, sFichierExcel est une chaîne)

// Récupérer la liste des fichiers HTML
arrFichiersHTML est un tableau dynamiquedynamique de chaînes = ListeHtmlFiles(sDossierHTML)
sTexteBrut est une chaîne = Remplace(sTexteBrut, "<font face="" >", "")

// Vérifier si des fichiers ont été trouvés
SI TableauOccurrence(arrFichiersHTML) = 0 ALORS
Info("Aucun fichier HTML à traiter dans le dossier : " + sDossierHTML)
RETOUR
FIN

// Ouvrir le fichier Excel existant
SI PAS fFichierExiste(sFichierExcel) ALORS
Info("Le fichier Excel spécifié n'existe pas : " + sFichierExcel)
RETOUR
FIN

xlsFichier est un xlsDocument = xlsOuvre(sFichierExcel)
SI ErreurDétectée ALORS
Info("Impossible d'ouvrir le fichier Excel : " + sFichierExcel)
RETOUR
FIN

// Récupérer le nombre de feuilles dans le document Excel
nNbFeuilles est un entier = xlsNbFeuille(xlsFichier)

// Créer un tableau associatif des feuilles (nom -> index)
tabFeuilles est un tableau associatif d'entiers

POUR i = 1 À nNbFeuilles
SI xlsFeuilleEnCours(xlsFichier, i) ALORS
sNomFeuille est une chaîne = xlsFichier.NomFeuille
tabFeuilles[sNomFeuille] = i
FIN
FIN

// Traiter chaque fichier HTML
POUR TOUT sFichierHTML de arrFichiersHTML
sNomFichier est une chaîne = fExtraitChemin(sFichierHTML, fFichier)
sDateFeuille est une chaîne = ExtraitChaîne(sNomFichier, 3, "_") + "_" + ExtraitChaîne(sNomFichier, 4, "_") + "_" + ExtraitChaîne(sNomFichier, 5, "_")

// Vérifier si une feuille existe avec le nom correspondant à la date
SI tabFeuilles[sDateFeuille]..Existe ALORS
nIndexFeuille est un entier = tabFeuilles[sDateFeuille]
SI xlsFeuilleEnCours(xlsFichier, nIndexFeuille) ALORS
// Charger le contenu du fichier HTML
sContenuHTML est une chaîne = fChargeTexte(sFichierHTML)
SI ErreurDétectée ALORS
Trace("Erreur lors de la lecture du fichier HTML : " + sFichierHTML)
CONTINUE
FIN
// Insérer le contenu HTML dans la feuille Excel, à partir de la ligne 20
InsérerTableauHtmlDansExcel(sContenuHTML, xlsFichier, 20)

SI ErreurDétectée ALORS
Trace("Erreur lors de l'écriture dans la feuille " + sDateFeuille)
CONTINUE
FIN
FIN
SINON
Trace("Aucune feuille trouvée pour " + sDateFeuille + ". Fichier ignoré.")
FIN
FIN

xlsSauve(xlsFichier)
xlsFerme(xlsFichier)
Info("Traitement terminé.")


Ce que j'essaie de faire, c'est cette fonction : "InsérerTableauHtmlDansExcel" (je vous met un des NOMBREUX code que j'ai essayé, mais celui ci non plus ne fonctionne pas) :

Procedure InsérerTableauHtmlDansExcel(sContenuHTML est une chaîne, xlsFichier est un xlsDocument, nLigneDépart est un entier)

// Charger le contenu HTML dans un document HTML
htmlDoc est un htmlDocument
htmlDoc = HTMLOuvre(sContenuHTML)

// Chercher les tableaux dans le document HTML
arrTableaux est un tableau de htmlNoeud = htmlDoc.ChercheElémentParBalise("table")

// Vérifier qu'il y a des tableaux
SI TableauOccurrence(arrTableaux) = 0 ALORS
Trace("Aucun tableau trouvé dans le contenu HTML.")
RETOUR
FIN

// Parcourir chaque tableau
nLigneActuelle est un entier = nLigneDépart
POUR TOUT htmlTableau de arrTableaux
// Parcourir chaque ligne du tableau
arrLignes est un tableau de htmlNoeud = htmlTableau.NoeudFils
POUR TOUT htmlLigne de arrLignes
SI htmlLigne..NomBalise = "tr" ALORS
// Parcourir chaque cellule de la ligne
tdCells est un tableau de htmlNoeud = htmlLigne.NoeudFils
colonne est un entier = 1
POUR TOUT htmlCellule de tdCells
SI htmlCellule..NomBalise = "td" OU htmlCellule..NomBalise = "th" ALORS
// Extraire le texte brut de la cellule
sTexteCellule est une chaîne = HTMLVersTexte(htmlCellule..HTMLInterne)
// Insérer le texte brut dans Excel
xlsFichier[nLigneActuelle, colonne] = sTexteCellule
colonne++
FIN
FIN
nLigneActuelle++
FIN
FIN
FIN


Dans mon fichier HTML, j'ai des tableaux (pas que mais pas mal), ce que je voudrais c'est l'afficher sous forme de tableaux aussi dans mon Excel mais avec les cellules excel evidemment. Si quelqu'un peut m'aider, je vous remercie par avance, si vous avez des questions, n'hésitez pas à me demander.