Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Je souhaiterais importer plusieurs feuilles d'un classeur Excel. J'ai bien vu plein de chose sur le site dont ça http://pbadonf.fr/forum/viewtopic.php?id=2183&p=1
Chacune de mes feuilles correspondent à une table de ma base de données, je voudrais donc importer chacune ds feuilles du classeur excel une à une dans une datawindow.
Mais Importfile ne se fait pas sur un format Excel, il faudrait donc que je transforme chacune des feuilles au format texte, et c'est là que je coince.
Quelqu'un pourrait-il m'aider ?
Merci
Hors ligne
Bonjour,
Tu peux te connecter à Excel via l'OLE et importer les données des différentes feuilles
integer li_ret = 1, li_index string ls_pathname, ls_filename long ll_rc oleobject loo_excel // En fonction du concept passé en paramètre, je détermine l'index de le feuille à récupérer CHOOSE CASE as_concept CASE 'CULTURE' li_index = 1 CASE 'OPERATION' li_index = 2 CASE 'INTRANT' li_index = 3 CASE 'CIBLE' li_index = 4 CASE 'USAGE1' li_index = 5 CASE 'USAGE2' li_index = 6 CASE 'INTRANT_NHL' li_index = 7 CASE ELSE li_index = 1 END CHOOSE // Connection à excel loo_excel = CREATE OLEObject loo_excel.ConnectToNewObject( "excel.application" ) loo_excel.visible = false // Ouverture du fichier passé en paramètre loo_excel.workbooks.open( as_path_fichier ) // Positionnement sur la bonne feuille et sélection du contenu loo_excel.ActiveWorkbook.Sheets(li_index).Select loo_excel.ActiveCell.CurrentRegion.Select loo_excel.Selection.Copy() // Importation des données à partir de la 2nde ligne copiée dans la dw passée en paramètre ll_rc = adw_datawindow.ImportClipBoard (2) // Vidage de la mémoire contenant la copie, fermeutre d'excel et déconnection ClipBoard('') loo_excel.workbooks.close() loo_excel.disconnectobject() DESTROY loo_excel return li_ret
tu peux même connaitre le nombre de feuille et boucler dessus
count = loo_excel.ActiveWorkbook.Sheets.Count
Hors ligne
Hors ligne
Juste une petite remarque:
Hors ligne
Merci beaucoup,
J'étais presque arrivé à cette solution, mais je ne connaissais pas le fonction ImportClipBoard
Bravo,
Hors ligne
Ce code marche à merveille.
Merci
Hors ligne
En fait j'ai rencontré un problème avec ce code car si le tableau se situe dans les cellules A1:C5 et que l'on sauvegarde avec le curseur positionné sur une cellule hors de ce tableau (comme E3), alors la commande
loo_excel.ActiveCell.CurrentRegion.Select loo_excel.Selection.Copy()
retourne un tableau A1:E5, ce qui dans mon cas est un bug.
Pour solutionner cela, j'ai remplacé la commande précédente par :
loo_excel.ActiveSheet.UsedRange.Select loo_excel.Selection.Copy()
Et là cela fonctionne très bien et sélectionne le tableau A1:C5
Dernière modification par LeCiao (01-03-2011 13:42:17)
Hors ligne
merci pour ton retour
Hors ligne
je suis novice et j'ai pas bien compris ce code, et déjà elle n'a pas marché avec moi, y a-t-il quelqu'un qui peut m'aider?
Hors ligne
Pourtant il y a du commentaire ?
Et j'ai réussi sans trop de soucis à le faire marcher
Hors ligne
titanbos a écrit:
je suis novice et j'ai pas bien compris ce code, et déjà elle n'a pas marché avec moi, y a-t-il quelqu'un qui peut m'aider?
salut,
* tu as excel d'installé sur ta machine ?
* tu arrives a nous dire a partir d'où ça coince ? (en traçant en mode debug pas à pas par exemple)
Hors ligne