Comment convertir un tableau en texte ?

    From The Document Foundation Wiki
    < Macros‎ | Writer
    This page is a translated version of the page Macros/Writer/008 and the translation is 100% complete.


    Other languages:

    Description

    On souhaite reproduire par programme la fonctionnalité du menu Tableau ▸ Convertir ▸ Tableau en texte.

    Nous utilisons ici le dispatcher pour lancer la commande .uno:ConvertTableToText (cette partie du code peut être enregistrée si l'option Outils ▸ Options ▸ Avancé ▸ Activer l'enregistreur de macros 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

    Fichier ODT pour tester la macro

    Notes