[Résolu][Writer] Copier tableaux dans feuilles Calc séparées

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Avatar de l’utilisateur
martinbrait
InconditiOOnnel
InconditiOOnnel
Messages : 753
Inscription : 09 avr. 2013 09:15
Localisation : T'as pas dit bonjour, merci et à bientot !

[Résolu][Writer] Copier tableaux dans feuilles Calc séparées

Message par martinbrait »

Bonjour,

Je dispose d'un document texte writer,contenant des tableaux,
que je souhaite lister-copier, afin de les coller tous, dans des
feuilles de classeur distinctes sous calc.

Il s'agit de copier le contenu de CopierCollerSource.odt.tableau1, et de le coller dans CopierCollerCible.ods.Feuille1
Il s'agit de copier le contenu de CopierCollerSource.odt.tableau2, et de le coller dans CopierCollerCible.ods.Feuille2
etc...

maigre source,de Pierre-Yves SAMYN pour commencer :

Code : Tout sélectionner

'parcourir les cellules du tableau1 writer
Sub Main

dim PysDoc as object, PysTable as object, PysCell as object
dim PysNum as integer

PysDoc = thisComponent
PysTable = PysDoc.TextTables.getByName("Tableau1")

for PysNum = lbound(PysTable.CellNames) to ubound(PysTable.CellNames)
   PysCell = PysTable.getCellByName(PysTable.CellNames(PysNum))
   print PysCell.string
next PysNum

End Sub
Et ainsi de suite, tout cela s'exécutant par routine de programme.

Merci beaucoup aux généreux sachants, qui m'accorderont leur aide éventuelle. :D

Bonne journée !
Pièces jointes
CopierCollerSource.odt
(16.4 Kio) Téléchargé 57 fois
CopierCollerCible.ods
(12.25 Kio) Téléchargé 44 fois
Dernière modification par martinbrait le 11 sept. 2018 14:46, modifié 2 fois.
LibreOffice version 5.4.7.2.M6 (x64)
Windows 10
+
LibreOffice version 5.4.7.2.M6 (x64)
Windows 7

#HSQL Database Engine 1.8.0
version=1.8.0

Locale : fr-FR (fr_FR)

Obligation de version


Bonjour, merci et à bientôt !
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Writer] Copier tableaux writer dans feuilles calc sépa

Message par Piaf »

Bonjour
En partant du principe qu'il y a autant de feuilles dans le document Calc que de tableaux dans le document Writer.
Tu peux tester :

Code : Tout sélectionner

Sub Main
Dim oDocCalc as Object, oDocWriter as Object, adresseDoc as String
Dim lesTables As Object, oTable As Object, oCellNames as Variant, oCurseur as Object, oRange as Object, Nom as String
Dim aCopier as Object, oCellule as Object, oFeuille as Object
Dim i As Long
	oDocCalc = thisComponent
	adresseDoc = ConvertToURL("Chemin du fichier/CopierCollerSource.odt")
	oDocWriter = StarDesktop.loadComponentFromURL(adresseDoc, "_default", 0, Array() )
	lesTables = oDocWriter.TextTables
	For Each Nom In lesTables.ElementNames()
		oTable = lesTables.getByName(Nom)
		oCellNames = oTable.getCellNames()
		oCurseur = oTable.createCursorByCellName(oCellNames(0))
		oCurseur.gotoCellByName(oCellNames(UBound(oCellNames())), True)
		oRange = oTable.getCellRangeByName(oCurseur.getRangeName())
		oDocWriter.getCurrentController.select(oRange)
		aCopier = oDocWriter.CurrentController.getTransferable()
		oFeuille = oDocCalc.Sheets(i)
		oFeuille.Name = Nom
		oCellule = oFeuille.getCellRangeByName("A1")
		oDocCalc.CurrentController.select(oCellule)
		oDocCalc.CurrentController.insertTransferable(aCopier)
		oFeuille.Columns(0).OptimalWidth = True
		i = i + 1
	Next
	oDocWriter.Close(True)
End Sub
A+
Pièces jointes
CopierCollerSource.odt
(16.96 Kio) Téléchargé 55 fois
CopierCollerCible.ods
(12.34 Kio) Téléchargé 47 fois
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
martinbrait
InconditiOOnnel
InconditiOOnnel
Messages : 753
Inscription : 09 avr. 2013 09:15
Localisation : T'as pas dit bonjour, merci et à bientot !

Re: [Writer] Copier tableaux writer dans feuilles calc sépa

Message par martinbrait »

Ah, Génial Piaf,
M E R C I ! :super:
LibreOffice version 5.4.7.2.M6 (x64)
Windows 10
+
LibreOffice version 5.4.7.2.M6 (x64)
Windows 7

#HSQL Database Engine 1.8.0
version=1.8.0

Locale : fr-FR (fr_FR)

Obligation de version


Bonjour, merci et à bientôt !
Verrouillé