Il existe deux solutions.
1
ère solution, ouvrir la table avec WDMap puis clic droit > Export vers Excel.
2
nde solution, par programmation WinDev :
// le traitement suivant permet de générer un fichier CSV ou Excel
// à partir d'un fichier .FIC fourni en paramètre, dont le programme ne possède pas l'analyse.
//
ficHF est une chaîne = "fichier.FIC"
ficOut est une chaîne = "fichier.xls"
typeexport est une chaîne = "xls"
pass est une chaîne = ""
noheader est un booléen = Faux
typeheader est un booléen = Faux
enc est une chaîne = """"
sep est une chaîne = ";"
uneTable est une Source de Données
SI PAS HDéclareExterne(ficHF, uneTable, pass) ALORS
RETURN
FIN
SI HOuvre({uneTable,indFichier},pass,hOLecture) ALORS // tentative d'ouverture de la table
// recherche des Rubriques de la table
txtRub est une chaîne = HListeRubrique({uneTable,indFichier},hLstDétail) // récupération des rubriques détaillées
nbRub est un entier = ChaîneOccurrence(txtRub,RC) // nombre de rubriques de la table
nbRub++
tabRub est un tableau de nbRub chaînes // stockera les noms des rubriques
tabType est un tableau de nbRub chaînes // stockera les types des rubriques
pos est un entier = 1
uneRub est une chaîne = ExtraitChaîne(txtRub,pos,RC) // première rubrique
TANTQUE uneRub<>EOT
tabRub[pos] = ExtraitChaîne(uneRub,1,TAB)
tabType[pos] = ExtraitChaîne(uneRub,2,TAB)+"("+ExtraitChaîne(uneRub,4,TAB)+")"
pos++
uneRub=ExtraitChaîne(txtRub,pos,RC)
FIN
idCol est un entier
maVue est une Source de Données
HCréeVue(maVue,uneTable,"*",hVueDéfaut) // passer par une vue pour parcourir la table
IF typeexport <> "xls" THEN // si l'export demandé n'est pas XLS, il est alors en CSV :
csv est un entier = fOuvre(ficOut,foCréation+foEcriture) // fichier de destination
IF csv = -1 THEN
RETURN
END
ligne est une chaîne
// Entête du fichier CSV : nom des rubriques
IF noheader = "" OR noheader = 0 THEN
ligne = ""
POUR idCol = 1 A nbRub
ligne += enc+tabRub[idCol]+enc+sep
FIN
ligne = Gauche(ligne,Taille(ligne)-1)
fEcritLigne(csv,ligne)
END
// seconde entête : les types
IF typeheader <> "" ET typeheader <> 0 THEN
ligne = ""
POUR idCol = 1 A nbRub
ligne += enc+tabType[idCol]+enc+sep
FIN
ligne = Gauche(ligne,Taille(ligne)-1)
fEcritLigne(csv,ligne)
END
// Remplissage du fichier CSV
HLitPremier(maVue)
TANTQUE PAS HEnDehors(maVue)
ligne = ""
POUR idCol = 1 A nbRub // pour chaque rubrique de l'enregistrement
ligne += enc+{"maVue."+tabRub[idCol],indRubrique}+enc+sep // on ajoute la valeur à la ligne courante, avec les séparateurs
FIN
ligne = Gauche(ligne,Taille(ligne)-1)
fEcritLigne(csv,ligne) // on écrit la ligne
HLitSuivant(maVue)
FIN
HFerme({uneTable,indFichier})
fFerme(csv)
RETURN // terminé avec succès
ELSE // EXCEL
xls est un xlsDocument
xlsAjouteFeuille(xls,fExtraitChemin(ficHF,fFichier))
descripteur est un booléen = xlsSauve(xls, ficOut) // création d'un fichier Excel vierge
SI descripteur = -1 ALORS
RETURN
FIN
idLigne est un entier = 1
// Entête du fichier Excel : nom des rubriques
IF noheader = "" OR noheader = 0 THEN
POUR idCol = 1 A nbRub
xls[idLigne,idCol] = tabRub[idCol]
FIN
idLigne++
END
// seconde entête : les types
IF typeheader <> "" ET typeheader <> 0 THEN
POUR idCol = 1 A nbRub
xls[idLigne,idCol] = tabType[idCol]
FIN
idLigne++
END
// Remplissage du fichier Excel
HLitPremier(maVue)
TANTQUE PAS HEnDehors(maVue)
idCol = 1
POUR idCol = 1 A nbRub // pour chaque rubrique, on ajoute la valeur dans la cellule
xls[idLigne,idCol] = {"maVue."+tabRub[idCol],indRubrique}
FIN
idLigne++
HLitSuivant(maVue)
FIN
HFerme({uneTable,indFichier})
xlsSauve(xls,ficOut)
xlsFerme(xls)
RETURN // terminé avec succès
END
FIN