Accueil

Extraire du Excel avec Jython (pour ODI)

Pour extraire des données contenues dans un classeur Excel avec Sunopsis / ODI, il existe plusieurs méthodes.

- les KM Excel, quand on sait s’en servir…

- un traitement jython :

Il faut auparavant installer la librairie Java jxl, dans le dossier sunopsis\sunopsis\lib (merci Christophe ;-)), puis tout est permis !

Un exemple de récupération d’une cellule :

 import java.lang as lang import jxl.Workbook as jxlWB import java.io.File as File ##########CONNEXION A UN FICHIER EXCEL########## # définition du chemin et du nom de fichier Excel fileDir = "C:/unDossier/" fileName = "unClasseurExcel.xls" myCell = "A1" ## ouverture du classeur Excel # nouvel objet de class File aFile = File(fileDir, fileName) # récupération du classeur theWB = jxlWB.getWorkbook(aFile) ## lecture d'une cellule # récupération de la feuille theSheet = theWB.getSheet(0) # récupération de la cellule theCell = theSheet.getCell(myCell) # récupération de la valeur de la cellule (type String) theCellValue = theCell.getContents() # affichage print "La cellule %s : %s" % (myCell, theCellValue) # fermeture du classeur theWB.close()

Après, à vous d’imaginer quoi faire de ça : récupérer toute une plage de cellules, toutes les feuilles, les intégrer dans une table Oracle, un fichier plat…

1 Comment so far

  1. Josserand BRINON avril 18th, 2007 12:15

    >> très intéressant ton code jython

    Merci !

    >> autre méthode beaucoup plus simple, transformer le fichier excel en csv, et on l’intègre de la meme façon qu’un fichier plat

    Oui, c’est exactement ce à quoi est destiné mon traitement Jython. Il ne fait qu’extraire, colonne par colonne, ligne par ligne, les données contenues dans chaque cellule pour en faire un fichier avec séparateur (type CSV)… que je reverse en "File" (fichier plat) avec ODI.
    Ceci évite d’inventer une quelconque macro Excel incontrôlable depuis un agent ODI.

    J’ai d’ailleurs fait ce traitement pour éviter de passer par le KM Excel, trop complexe à manipuler à mon goût, entre autres de part le fait qu’il faille créer une plage de cellules DANS le fichier Excel (ou dans son fichier "miroir" si je me souviens bien).
    J’ai voulu à tout pris éviter de faire une quelconque modification dans ma source de données (si on peut appeler Excel ainsi) : ma plage de cellule est renseignée dans le traitement Jython, avec des options pour faire propre.

    >> tu n’as pas un code pour lire un calendrier sous outlook ?
    Eh non, désolé !

    Autre détail pour compléter mon code, la méthode getSheet(int numFeuille) accepte également le nom de la feuille : getSheet(String nomFeuille).

Leave a reply