Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

extraction Excel

13 réponses
Avatar
Roumégou Eric
Bonjour,

Pour faire des extractions Excel, j'utilise l'excellente classe de
D.Daussy.
Son gros avantage : ne pas avoir besoin d'un prog Excel sur le serveur
car ne passant pas par OLE. C'est fondammental pour une utilisation
depuis un site WebDev.

Son gros inconvénient : elle produit un format excel 2.1. Mes clients
sont donc toujours obligé de faire un sauvegarder sous une vs au
dessus.

Côté instructions PCSoft natives, si on peut lire aisément un classeur
excel, l'écriture reste encore malaisée, ne nous laissant qu'un pauvre
TableVersExcel au fonctionnement quelque fois bizarre (si on utilise
les taMiseneforme ou taFusion)

Donc ma question est :
- avez vous réussi à améliorer la classe citée plus haut ou avez vous
d'autres solutions ? (sans OLE je le rappelle)

Merci de vos réponses.

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)

10 réponses

1 2
Avatar
Roumégou Eric
Roumégou Eric a exposé le 18/10/2010 :
Bonjour,

Pour faire des extractions Excel, j'utilise l'excellente classe de D.Daussy.
Son gros avantage : ne pas avoir besoin d'un prog Excel sur le serveur car ne
passant pas par OLE. C'est fondammental pour une utilisation depuis un site
WebDev.

Son gros inconvénient : elle produit un format excel 2.1. Mes clients sont
donc toujours obligé de faire un sauvegarder sous une vs au dessus.

Côté instructions PCSoft natives, si on peut lire aisément un classeur excel,
l'écriture reste encore malaisée, ne nous laissant qu'un pauvre
TableVersExcel au fonctionnement quelque fois bizarre (si on utilise les
taMiseneforme ou taFusion)

Donc ma question est :
- avez vous réussi à améliorer la classe citée plus haut ou avez vous
d'autres solutions ? (sans OLE je le rappelle)

Merci de vos réponses.



Désolé d'insister mais personne n'a eu besoin de générer du excel en
dehors d'une solution OLE ?

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Bruno
Il se trouve que Roumégou Eric a formulé :
Roumégou Eric a exposé le 18/10/2010 :
Bonjour,

Pour faire des extractions Excel, j'utilise l'excellente classe de
D.Daussy.
Son gros avantage : ne pas avoir besoin d'un prog Excel sur le serveur car
ne passant pas par OLE. C'est fondammental pour une utilisation depuis un
site WebDev.

Son gros inconvénient : elle produit un format excel 2.1. Mes clients sont
donc toujours obligé de faire un sauvegarder sous une vs au dessus.

Côté instructions PCSoft natives, si on peut lire aisément un classeur
excel, l'écriture reste encore malaisée, ne nous laissant qu'un pauvre
TableVersExcel au fonctionnement quelque fois bizarre (si on utilise les
taMiseneforme ou taFusion)

Donc ma question est :
- avez vous réussi à améliorer la classe citée plus haut ou avez vous
d'autres solutions ? (sans OLE je le rappelle)

Merci de vos réponses.



Désolé d'insister mais personne n'a eu besoin de générer du excel en dehors
d'une solution OLE ?



Bonjour,

Pour quelques tableaux, nous utilisons (WD-WB 15) les fonctions xls.
Par contre c'est asser hard pour la mise en page des cellules (le
quadrillage). En plus, on ne peut pas mettre de formule pour faire des
totaux (signaler au ST) WD16 ?
Mais c'est pratique justement car on n' a pas besoin d'Excel sur les
postes ou serveur sur internet.

--
Bruno A

suivre ce lien pour répondre :
http://cerbermail.com/?TF4s3h4ejs
;)
Avatar
Roumégou Eric
Bruno a pensé très fort :
Il se trouve que Roumégou Eric a formulé :
Roumégou Eric a exposé le 18/10/2010 :
Bonjour,

Pour faire des extractions Excel, j'utilise l'excellente classe de
D.Daussy.
Son gros avantage : ne pas avoir besoin d'un prog Excel sur le serveur car
ne passant pas par OLE. C'est fondammental pour une utilisation depuis un
site WebDev.

Son gros inconvénient : elle produit un format excel 2.1. Mes clients sont
donc toujours obligé de faire un sauvegarder sous une vs au dessus.

Côté instructions PCSoft natives, si on peut lire aisément un classeur
excel, l'écriture reste encore malaisée, ne nous laissant qu'un pauvre
TableVersExcel au fonctionnement quelque fois bizarre (si on utilise les
taMiseneforme ou taFusion)

Donc ma question est :
- avez vous réussi à améliorer la classe citée plus haut ou avez vous
d'autres solutions ? (sans OLE je le rappelle)

Merci de vos réponses.



Désolé d'insister mais personne n'a eu besoin de générer du excel en dehors
d'une solution OLE ?



Bonjour,

Pour quelques tableaux, nous utilisons (WD-WB 15) les fonctions xls. Par
contre c'est asser hard pour la mise en page des cellules (le quadrillage).
En plus, on ne peut pas mettre de formule pour faire des totaux (signaler au
ST) WD16 ?
Mais c'est pratique justement car on n' a pas besoin d'Excel sur les postes
ou serveur sur internet.



Merci de ta réponse.
Mais tu sais écrire/créer un nouveau doc excel Quelles sont les fns
que tu utilises (et sont-elles en 14 car nous sommes majoritairement en
14)

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Bruno
Merci de ta réponse.
Mais tu sais écrire/créer un nouveau doc excel Quelles sont les fns que tu
utilises (et sont-elles en 14 car nous sommes majoritairement en 14)



Tout se fait dans des nouveaux documents. Je travaille pour des écoles,
on sort par exemple un récapitulatif de moyennes par matière et par
élèves.

--
Bruno A

suivre ce lien pour répondre :
http://cerbermail.com/?TF4s3h4ejs
;)
Avatar
Roumégou Eric
Bruno a présenté l'énoncé suivant :
Merci de ta réponse.
Mais tu sais écrire/créer un nouveau doc excel Quelles sont les fns que tu
utilises (et sont-elles en 14 car nous sommes majoritairement en 14)



Tout se fait dans des nouveaux documents. Je travaille pour des écoles, on
sort par exemple un récapitulatif de moyennes par matière et par élèves.



encore merci de ton intervention car cela m'a fait chercher un peu.

J'avais bien vu qu'on pouvait modifier un fichier et qu'il y avait le
xlssauve.
Mais je ne voyais jamais le moyen de créer un nouveau fichier.
En fait il faut faire un xlsouvre d'un xls vide spécialement laissé
pour cela, et faire un xlssauve sous un autre nom.

Je vais pouvoir refaire mes fonctions génériques d'export excel.

Maintenant si vous avez un truc moins bidouille que le xlsouvre
+xlssauve sous un autre nom, je suis preneur.

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Bruno
Roumégou Eric avait énoncé :
Bruno a présenté l'énoncé suivant :
Merci de ta réponse.
Mais tu sais écrire/créer un nouveau doc excel Quelles sont les fns que
tu utilises (et sont-elles en 14 car nous sommes majoritairement en 14)



Tout se fait dans des nouveaux documents. Je travaille pour des écoles, on
sort par exemple un récapitulatif de moyennes par matière et par élèves.



encore merci de ton intervention car cela m'a fait chercher un peu.

J'avais bien vu qu'on pouvait modifier un fichier et qu'il y avait le
xlssauve.
Mais je ne voyais jamais le moyen de créer un nouveau fichier.
En fait il faut faire un xlsouvre d'un xls vide spécialement laissé pour
cela, et faire un xlssauve sous un autre nom.

Je vais pouvoir refaire mes fonctions génériques d'export excel.

Maintenant si vous avez un truc moins bidouille que le xlsouvre +xlssauve
sous un autre nom, je suis preneur.



Dans les grandes lignes, on fait :

LOCAL
lnomfichier est une chaîne
lIdfichierXls est un xlsDocument
lXlsPolice est un tableau de Police
lXlscadre est un tableau de Cadre

lMonfichier = "monfichier.xls" //chemin du fichier

//On déclare les polices
P_Xl_Police(lXlsPolice,lXlscadre) //procédure

xlsAjouteFeuille(LIdfichierXls,"Listing")
//écriture dans les cellule + formatage des cellules
.....
xlsSauve(lIdfichierXls,lnomfichier)
xlsFerme(lIdfichierXls)

--
Bruno A

suivre ce lien pour répondre :
http://cerbermail.com/?TF4s3h4ejs
;)
Avatar
Roumégou Eric
Bruno avait prétendu :
Roumégou Eric avait énoncé :
Bruno a présenté l'énoncé suivant :
Merci de ta réponse.
Mais tu sais écrire/créer un nouveau doc excel Quelles sont les fns que
tu utilises (et sont-elles en 14 car nous sommes majoritairement en 14)



Tout se fait dans des nouveaux documents. Je travaille pour des écoles, on
sort par exemple un récapitulatif de moyennes par matière et par élèves.



encore merci de ton intervention car cela m'a fait chercher un peu.

J'avais bien vu qu'on pouvait modifier un fichier et qu'il y avait le
xlssauve.
Mais je ne voyais jamais le moyen de créer un nouveau fichier.
En fait il faut faire un xlsouvre d'un xls vide spécialement laissé pour
cela, et faire un xlssauve sous un autre nom.

Je vais pouvoir refaire mes fonctions génériques d'export excel.

Maintenant si vous avez un truc moins bidouille que le xlsouvre +xlssauve
sous un autre nom, je suis preneur.



Dans les grandes lignes, on fait :

LOCAL
lnomfichier est une chaîne
lIdfichierXls est un xlsDocument
lXlsPolice est un tableau de Police
lXlscadre est un tableau de Cadre

lMonfichier = "monfichier.xls" //chemin du fichier

//On déclare les polices
P_Xl_Police(lXlsPolice,lXlscadre) //procédure

xlsAjouteFeuille(LIdfichierXls,"Listing")
//écriture dans les cellule + formatage des cellules
.....
xlsSauve(lIdfichierXls,lnomfichier)
xlsFerme(lIdfichierXls)



Merci de ta réponse, mais peux tu me détailler un peu plus ?

Malgré toutes mes recherches en 14 et en 15, je ne vois aucun exemple
pour intervenir sur le formatage cellule. Donc là, j'ai substitué ds
mon utilitaire les xls de WD à ma classe, et j'obtiens maintenant mon
fichier ds une version d'excel qui me convient.
Mais à minima, j'aimerais pouvoir mettre l'en-tête de colonne en gras
ou avec un motif.

Donc pourrais tu stp me donner le code de
//On déclare les polices
P_Xl_Police(lXlsPolice,lXlscadre) //procédure



ainsi que quelques lignes de
//écriture dans les cellule + formatage des cellules
.....



Sinon avec ton code j'ai fini par comprendre que l'on n'avait pas
besoin d'un xlsouvre pour travailler (seul un xlsAjoutefeuille).
Cela m'évite ce fichier vide et un fcopiefichier; ce qui est très bien.

Reste plus que le point du formatage des colonnes et je pourrais me
coucher moins con ce soir.

Merci d'avance de ton aide.

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Bruno
Roumégou Eric a formulé ce jeudi :
Bruno avait prétendu :
Roumégou Eric avait énoncé :
Bruno a présenté l'énoncé suivant :
Merci de ta réponse.
Mais tu sais écrire/créer un nouveau doc excel Quelles sont les fns que
tu utilises (et sont-elles en 14 car nous sommes majoritairement en 14)



Tout se fait dans des nouveaux documents. Je travaille pour des écoles,
on sort par exemple un récapitulatif de moyennes par matière et par
élèves.



encore merci de ton intervention car cela m'a fait chercher un peu.

J'avais bien vu qu'on pouvait modifier un fichier et qu'il y avait le
xlssauve.
Mais je ne voyais jamais le moyen de créer un nouveau fichier.
En fait il faut faire un xlsouvre d'un xls vide spécialement laissé pour
cela, et faire un xlssauve sous un autre nom.

Je vais pouvoir refaire mes fonctions génériques d'export excel.

Maintenant si vous avez un truc moins bidouille que le xlsouvre +xlssauve
sous un autre nom, je suis preneur.



Dans les grandes lignes, on fait :

LOCAL
lnomfichier est une chaîne
lIdfichierXls est un xlsDocument
lXlsPolice est un tableau de Police
lXlscadre est un tableau de Cadre

lMonfichier = "monfichier.xls" //chemin du fichier

//On déclare les polices
P_Xl_Police(lXlsPolice,lXlscadre) //procédure

xlsAjouteFeuille(LIdfichierXls,"Listing")
//écriture dans les cellule + formatage des cellules
.....
xlsSauve(lIdfichierXls,lnomfichier)
xlsFerme(lIdfichierXls)



Merci de ta réponse, mais peux tu me détailler un peu plus ?

Malgré toutes mes recherches en 14 et en 15, je ne vois aucun exemple pour
intervenir sur le formatage cellule. Donc là, j'ai substitué ds mon
utilitaire les xls de WD à ma classe, et j'obtiens maintenant mon fichier ds
une version d'excel qui me convient.
Mais à minima, j'aimerais pouvoir mettre l'en-tête de colonne en gras ou avec
un motif.

Donc pourrais tu stp me donner le code de
//On déclare les polices
P_Xl_Police(lXlsPolice,lXlscadre) //procédure




PROCEDURE P_Xl_Police(pTableauPolice,pTableauCadre)

LOCAL
lcadre est un Cadre

//*************************
//Mise en place des polices
//*************************
TableauAjouteLigne(pTableauPolice,PoliceCrée("Tahoma",8,iNormal,iNoir)) //1 :
Police Standard
TableauAjouteLigne(pTableauPolice,PoliceCrée("Tahoma",8,iGras,iNoir)) //2 :
Police Standard Gras
TableauAjouteLigne(pTableauPolice,PoliceCrée("Tahoma",9,iNormal,iNoir)) //3 :
Police Grande
TableauAjouteLigne(pTableauPolice,PoliceCrée("Tahoma",9,iGras,iNoir)) //4 :
Police Grande Gras
TableauAjouteLigne(pTableauPolice,PoliceCrée("Tahoma",8,iItalique,iNoir)) //5 :
Police Standard Italique
TableauAjouteLigne(pTableauPolice,PoliceCrée("Tahoma",8,iNormal,iNoir,60)) //6 :
Police Standard inclinée


lcadre..Couleur=iNoir
lcadre..Bords=BordTous
lcadre..Trait=TraitContinu
TableauAjouteLigne(pTableauCadre,lcadre) //1 : Trait continu tous

lcadre..Couleur=iNoir
lcadre..Bords=BordGauche
lcadre..Trait=TraitContinu
TableauAjouteLigne(pTableauCadre,lcadre) //2 : Trait continu gauche

lcadre..Couleur=iNoir
lcadre..Bords=BordDroite
lcadre..Trait=TraitContinu
TableauAjouteLigne(pTableauCadre,lcadre) //3 : Trait continu droite


ainsi que quelques lignes de
//écriture dans les cellule + formatage des cellules
.....




Pour le formatage des cellules il faut ruser ! Il faut remplir une
colonne sur 2 car si tu mets un cadre à droite sur une cellule et un
cadre à gauche sur la cellule suivante (meme ligne), le premier sera
effacé (j'espere etre clair...). Ainsi pour une entete de tableau :

PROCEDURE P_Xl_Entete(pIdXls,pXlsPolice,pXlsCadre,pListeIdValidation)

LOCAL
j est un entier

//*************
//Titre
//*************
j=2
P_Xl_Cellule_Format(pIdXls,pXlsPolice,pXlsCadre,1,j,"Libellé Gras")


pIdXls[1,j]="Listing " //titre

//**************
//En tête Nature
//**************
j=2
P_Xl_Cellule_Format(pIdXls,pXlsPolice,pXlsCadre,3,j,"En tête nature")
pIdXls[3,j]="Nature"

//**************
//En tête Numéro
//**************
j+=2
P_Xl_Cellule_Format(pIdXls,pXlsPolice,pXlsCadre,3,j,"En tête numéro")
pIdXls[3,j]="Numéro"

//************
//En tête date
//************
j+=2
P_Xl_Cellule_Format(pIdXls,pXlsPolice,pXlsCadre,3,j,"En tête date")
pIdXls[3,j]="Date"




PROCEDURE
P_Xl_Cellule_Format(pIdXls,pXlsPolice,pXlsCadre,pLigne,pColonne,pTypeCellule)


SELON pTypeCellule
CAS "Libellé Gras"
//Libellé en gras : Titre et nombre de facture
pIdXls[pLigne,pColonne].police=pXlsPolice[4]

CAS "En tête nature","En tête type","En tête règlement","En tête
famille","En tête date"
//Formatage des cellules de nature, numéro, type , nom famille, mode
de reglement
pIdXls[pLigne,pColonne].police=pXlsPolice[1]
pIdXls[pLigne,pColonne].multiligneúux
pIdXls[pLigne,pColonne].alignementv=cvBas
pIdXls[pLigne,pColonne].alignementh=chGauche
SELON pTypeCellule
CAS "En tête nature"
pIdXls.colonne[pColonne].Largeur`
CAS "En tête famille"
pIdXls.colonne[pColonne].Largeur&0
CAS "En tête date"
pIdXls.colonne[pColonne].Largeurp
AUTRE CAS
pIdXls.colonne[pColonne].Largeur
FIN
pIdXls.colonne[pColonne].celluledéfaut=pIdXls[pLigne,pColonne]

//Formatage de la cellule n° facture, type , nom famille, mode de
reglement
pIdXls[pLigne,pColonne].alignementh=chCentre
pIdXls[pLigne,pColonne].alignementv=cvMilieu
pIdXls[pLigne,pColonne].police=pXlsPolice[3]
pIdXls[pLigne,pColonne].couleurfond=RVB(204,255,204) //Vert

etc...

*******************************************
pour le corps du tableau
********************************

PROCEDURE P_Xl_Corps(pIdXls,pXlsPolice,pXlsCadre,pListeIdValidation)

//**********
//Nature
//**********
j=2
P_Xl_Cellule_Format(pIdXls,pXlsPolice,pXlsCadre,i,j,"Cadre Pointillé")
//formatage
pIdXls[i,j]="Facture" //ecriture de la donnée


//**********
//Numéro
//**********
j+=2
P_Xl_Cellule_Format(pIdXls,pXlsPolice,pXlsCadre,i,j,"Cadre Pointillé")
pIdXls[i,j]=lReqFacture.NUMERO_FACTURE

//****
//Date
//****
j+=2
P_Xl_Cellule_Format(pIdXls,pXlsPolice,pXlsCadre,i,j,"Cadre Pointillé")
pIdXls[i,j]ÚteVersChaîne(lReqFacture.DATE)

etc....

*************************************************
Traits verticaux et horizontaux
*********************************
PROCEDURE P_Xl_Fin(pIdXls,pXlsCadre,pTableauTotal)

LOCAL
i,j,lcadre,lmaxiLigne,lIndiceDepart sont des entiers

//****************
//Traits Verticaux
//****************

BOUCLE
SELON j
CAS 0
//1er trait sans total
j=1
lcadre=3
lmaxiLigne=4+pTableauTotal[1]
CAS <
j+=2
lcadre=3
CAS <
j+=2
lcadre=3
lmaxiLigne=6+pTableauTotal[1]
CAS <
j+=2
lcadre=2
AUTRE CAS
SORTIR
FIN
pIdXls.colonne[j].Largeur=1
pIdXls[4,j]=" " //Pour le filtre
POUR i=3 A lMaxiLigne
pIdXls[i,j].cadre=pXlsCadre[lcadre]
FIN
FIN



//*****************
//Trait Horizontaux
//*****************
i=0
lcadre=4
lIndiceDepart=2
lmaxiLigne=7+pTableauTotal[1]
BOUCLE
SELON i
CAS <=2
i+=2
CAS <lmaxiLigne
lcadre=5
SI i=4 ALORS
i=lmaxiligne-2
SINON
i=lmaxiligne
lIndiceDepart
FIN
AUTRE CAS
SORTIR

FIN
SI i>2 ET i<lmaxiLigne ALORS pIdXls.ligne[i].hauteur=1
POUR j=lIndiceDepart A 20
pIdXls[i,j].cadre=pXlsCadre[lcadre]
FIN

FIN

Pour la dernière procédure, cela varie en fonction de ton tableau à
éditer ligne et colonne de départ.
Toutes ces procédures ne sont pas génériques chez nous et sont
dupliqués et adaptés en fonction (peut mieux faire surement mais ici
personne n'a eu le temps de ...)

Voilà , n'hésite pas si besoin.


--
Bruno A

suivre ce lien pour répondre :
http://cerbermail.com/?TF4s3h4ejs
;)
Avatar
Roumégou Eric
Bruno a pensé très fort :


Prodigieusement génial !!!
Enfin je vais résoudre un pb qui me prend la tête depuis 2,3 ans.

Un très grand merci mais j'ai un peu honte d'avoir du te demander tout
cela. Je suis plutôt du genre à vraiment chercher avant de poser des
questions.

Donc ma dernière question tout de même : T'as trouvé ça comment ? parce
que dans la doc, comme dans les exemples, il n'y a rien de rien. (à
part les bouts de code pour lire ou faire du TableVersExcel)
En tout cas, moi je n'ai pas trouvé)

c'était une lst ?

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Bruno
Roumégou Eric a présenté l'énoncé suivant :
Bruno a pensé très fort :


Prodigieusement génial !!!
Enfin je vais résoudre un pb qui me prend la tête depuis 2,3 ans.

Un très grand merci mais j'ai un peu honte d'avoir du te demander tout cela.
Je suis plutôt du genre à vraiment chercher avant de poser des questions.

Donc ma dernière question tout de même : T'as trouvé ça comment ? parce que
dans la doc, comme dans les exemples, il n'y a rien de rien. (à part les
bouts de code pour lire ou faire du TableVersExcel)
En tout cas, moi je n'ai pas trouvé)

c'était une lst ?



Rendons à César ce qui appartient à César : c'est mon collègue qui
s'est penché sur le pb (en appelant le ST pour comprendre la logique)
car sur nos serveurs Internet nous n'avons pas d'Excel !. En plus, le
OLE automation peut planter de temps en temps par rapport aux
configs.... D'ou ce developpement...mais il manque certaines choses
comme pouvoir appliquer des formules dans des cellules pour faire des
totaux en fin de colonne. Content de t'avoir rendu service !


A+

--
Bruno A

suivre ce lien pour répondre :
http://cerbermail.com/?TF4s3h4ejs
;)
1 2