Comment convertir un tableau en texte ?
TDF LibreOffice Document Liberation Project Blogs communautaires Weblate Nextcloud Redmine Ask LibreOffice Donner
Description
On souhaite reproduire par programme la fonctionnalité du menu
▸ ▸ .Nous utilisons ici le dispatcher pour lancer la commande .uno:ConvertTableToText (cette partie du code peut être enregistrée si l'option
▸ ▸ ▸ est activée).Le programme doit commencer par positionner le curseur dans le tableau à convertir ce qui se fera par exemple avec la méthode Select du CurrentController en lui passant un curseur créé sur le tableau.
L'exemple ci-dessous convertit un tableau nommé "Tableau2".
L'accès au tableau se fait via la méthode getByName du service TextTables. La méthode com.sun.star.text.createCursorByCellName[1] permet de créer un curseur sur la cellule A1. C'est ce curseur qui est utilisé pour sélectionner le tableau qui peut alors être converti.
Code
En LibreOffice Basic:
Option Explicit
Sub Main()
TableToText("Table2")
End Sub
Sub TableToText(TableName As String)
'''Convertir un tableau en texte'''
Dim oDoc As Object ' com.sun.star.uno.XInterface (ThisComponent)
Dim oTable As Object ' com.sun.star.text.XTextTable
Dim oTableCursor As Object ' com.sun.star.text.XTextTableCursor
Dim document As Object ' com.sun.star.frame.XFrame (ThisComponent.CurrentController.Frame)
Dim dispatcher As Object ' com.sun.star.frame.DispatchHelper
Dim args(0) As New com.sun.star.beans.PropertyValue
oDoc = ThisComponent
oTable = oDoc.TextTables.getByName(TableName)
oTableCursor = oTable.createCursorByCellName("A1")
oDoc.CurrentController.select(oTableCursor)
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
args(0).Name = "Delimiter"
args(0).Value = CHR$(9) ' ASCII char #9 = TAB
dispatcher.executeDispatch(document, ".uno:ConvertTableToText", "", 0, args())
End Sub ' TableToText