|
| Utiliser XmlMaps et TableStyle avec l'objet Automation Excel |
| Iniciado por Julien V, 16,abr. 2020 14:00 - 1 respuesta |
| |
| | | |
|
| |
Miembro registrado 134 mensajes |
|
| Publicado el 16,abril 2020 - 14:00 |
Bonjour,
je travaille actuellement sur une classe Excel custom permettant de générer des feuilles à partir : - d'une requête sql - d'une source de données - d'un champ table - d'une variable de type structure / classe / tableau

à chaque ajout de données, je définis un nom de tableau et lui affecte un style :
Excel >> Sheets( _nomFeuille ) >> Range( Excel >> Sheets( _nomFeuille ) >> Cells( 1, 1 ), Excel >> Sheets( _nomFeuille ) >> Cells( nbLignes, nbColonnes ) ) >> Select() Excel >> Sheets( _nomFeuille ) >> ListObjects >> Add( 1, Excel >> Selection, *, 1 ) >> Name = nomTableau + TableauOccurrence( nomsFeuilles ) Excel >> Sheets( _nomFeuille ) >> ListObjects( nomTableau + TableauOccurrence( nomsFeuilles ) ) >> TableStyle = nomStyleTableau Excel >> Sheets( _nomFeuille ) >> Columns >> autoFit()
mon souci est que pour les feuilles générées à partir requête sql / source de données / table, je connais à l'avance le nombre de lignes et de colonnes pour faire ma sélection et ensuite lui applique le nom du tableau et son style;
pour l'ajout de feuille à partir d'une variable, ce n'est pas le cas, je passe par un XmlMap qui fait tout le boulot
Sérialise( _variable, buffer, psdXMLAgrégé ) fSauveBuffer( chemin_XML, buffer ) Excel >> ActiveWorkbook >> XmlMaps >> Add( chemin_XML )>> Name = Map Excel >> ActiveWorkbook >> XmlMaps( Map ) >> ShowImportExportValidationErrors = False Excel >> ActiveWorkbook >> XmlMaps( Map ) >> AdjustColumnWidth = True Excel >> ActiveWorkbook >> XmlMaps( Map ) >> PreserveColumnFilter = True Excel >> ActiveWorkbook >> XmlMaps( Map ) >> PreserveNumberFormatting = True Excel >> ActiveWorkbook >> XmlMaps( Map ) >> AppendOnImport = False Excel >> ActiveWorkbook >> XmlImport( chemin_XML, objNothing, True, Excel >> Range( "$A$1" ) ) Y-a-t-il possibilité après le XmlImport de déterminer les cellules à sélectionner ? |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 134 mensajes |
|
| Publicado el 17,abril 2020 - 16:29 |
pb résolu :
- la partie xmlMap ne sert à rien ici, l'objet n'étant pas utilisé dans XmlImport - XmlImport crée un objet mappage xml ainsi qu'un objet connexion; les deux sont à supprimer
chemin_XML = fFichierTemp( "xml_", fExtraitChemin( mChemin, fDisque + fRépertoire) ) + ".xml" Sérialise( _variable, buffer, psdXMLAgrégé ) fSauveBuffer( chemin_XML, buffer ) Excel >> ActiveWorkbook >> XmlImport( chemin_XML, objNothing, True, Excel >> Range( "$A$1" ) )
iMax = Excel >> ActiveWorkbook >> XmlMaps >> Count() SI iMax = 1 ALORS Excel >> ActiveWorkbook >> XmlMaps >> Item( 1 ) >> Delete() FIN
iMax = Excel >> ActiveWorkbook >> Connections >> Count() SI iMax = 1 ALORS Excel >> ActiveWorkbook >> Connections >> Item( 1 ) >> Delete() FIN
- XmlImport créé également un tableau, il suffit de le rechercher, le renommer et lui appliquer un style
iMax = Excel >> Sheets( _nomFeuille ) >> ListObjects >> Count() SI iMax = 1 ALORS Excel >> Sheets( _nomFeuille ) >> ListObjects >> Item( 1 ) >> Name = nomTableau + TableauOccurrence( nomsFeuilles ) Excel >> Sheets( _nomFeuille ) >> ListObjects( nomTableau + TableauOccurrence( nomsFeuilles ) ) >> TableStyle = nomStyleTableau Excel >> Sheets( _nomFeuille ) >> ListObjects( nomTableau + TableauOccurrence( nomsFeuilles ) ) >> Range() >> Select() FIN
|
| |
| |
| | | |
|
| | | | |
| | |
|