Pomoc LibreOffice 25.2
Korzystając z języków programowania Basic lub Python, możliwe jest pisanie makr, które stosują formaty do zakresów komórek w programie Calc.
Poniższy fragment kodu tworzy element Sub o nazwie FormatCellBorder, który stosuje nowe formaty krawędzi do podanego adresu zakresu w bieżącym arkuszu programu Calc.
    Sub FormatCellBorder(cellAddress as String, newStyle as Byte, newWidth as Long, Optional newColor as Long)
        ' Tworzy strukturę UNO, która będzie przechowywać nowy format linii
        Dim lineFormat as New com.sun.star.table.BorderLine2
        lineFormat.LineStyle = newStyle
        lineFormat.LineWidth = newWidth
        If Not IsMissing(newColor) Then lineFormat.Color = newColor
        ' Pobiera komórkę docelową
        Dim oCell as Object
        Set oCell = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(cellAddress)
        ' Stosuje nowy format do wszystkich krawędzi
        oCell.TopBorder = lineFormat
        oCell.RightBorder = lineFormat
        oCell.LeftBorder = lineFormat
        oCell.BottomBorder = lineFormat
    End Sub
  Powyższa Sub przyjmuje cztery argumenty:
cellAddress to ciąg znaków oznaczający zakres do sformatowania w formacie "A1".
newStyle to liczba całkowita odpowiadająca stylowi linii krawędzi (patrz Style linii poniżej).
newWidth jest wartością całkowitą określającą grubość linii.
newColor to liczba całkowita odpowiadająca kolorowi zdefiniowanemu za pomocą funkcji RGB.
Aby wywołać FFormatCellBorder, utwórz nowe makro i przekaż mu wymagane argumenty w następujący sposób:
    Sub MyMacro
        ' Daje dostęp do stałych stylu linii
        Dim cStyle as Object
        Set cStyle = com.sun.star.table.BorderLineStyle
        ' Formatuje "B5" jednolitymi niebieskimi krawędziami
        FormatCellBorder("B5", cStyle.SOLID, 20, RGB(0, 0, 255))
        ' Formatuje wszystkie krawędzie w zakresie "D2:F6" czerwonymi przerywanymi obramowaniami
        FormatCellBorder("D2:F6", cStyle.DOTTED, 20, RGB(255, 0, 0))
    End Sub
  Możliwe jest zaimplementowanie tej samej funkcjonalności w Pythonie:
    from uno import createUnoStruct
    from scriptforge import CreateScriptService
    
    def formatCellBorder(cellAddress, newStyle, newWidth, newColor=0):
        # Określa nowy format linii
        line_format = createUnoStruct("com.sun.star.table.BorderLine2")
        line_format.LineStyle = newStyle
        line_format.LineWidth = newWidth
        line_format.Color = newColor
        # Usługa Scriptforge umożliwiająca dostęp do zakresów komórek
        doc = CreateScriptService("Calc")
        cell = doc.XCellRange(cellAddress)
        cell.TopBorder = line_format
        cell.RightBorder = line_format
        cell.LeftBorder = line_format
        cell.BottomBorder = line_format
  Poniższy fragment kodu implementuje makro o nazwie myMacro, które wywołuje formatCellBorder:
    from com.sun.star.table import BorderLineStyle as cStyle
    
    def myMacro():
        bas = CreateScriptService("Basic")
        formatCellBorder("B5", cStyle.SOLID, 20, bas.RGB(0, 0, 255))
        formatCellBorder("D2:F6", cStyle.DOTTED, 20, bas.RGB(255, 0, 0))
  Przedstawiony powyżej kod Pythona wykorzystuje bibliotekę ScriptForge, która jest dostępna od LibreOffice 7.2.
Style linii są zdefiniowane jako stałe całkowite. Poniższa tabela zawiera stałe dla stylów linii dostępnych w :
| Nazwa stałej | Wartość całkowita | Nazwa stylu linii | 
|---|---|---|
| SOLID | 0 | Ciągła | 
| DOTTED | 1 | Kropkowana | 
| DASHED | 2 | Kreskowana | 
| FINE_DASHED | 14 | Cienko kreskowana | 
| DOUBLE_THIN | 15 | Podwójna cienka | 
| DASH_DOT | 16 | Kreska-kropka | 
| DASH_DOT_DOT | 17 | Kreska-kropka-kropka | 
Więcej informacji na temat stałych stylu linii można znaleźć w dokumencie BorderLineStyle Constant Reference w dokumentacji interfejsu API LibreOffice.
Obiekty zakresu mają właściwość o nazwie TableBorder2, której można użyć do formatowania krawędzi zakresu, tak jak robi się to w oknie dialogowym w sekcji Rozmieszczenie linii.
Oprócz górnej, dolnej, lewej i prawej krawędzi TableBorder2 definiuje również pionowe i poziome krawędzie. Poniższe makro dotyczy tylko górnej i dolnej krawędzi zakresu "B2:E5".
    Sub TableBorder2Example
        Dim cStyle as Object
        Set cStyle = com.sun.star.table.BorderLineStyle
        ' Określa nowy format linii
        Dim lineFormat as New com.sun.star.table.BorderLine2
        lineFormat.LineStyle = cStyle.SOLID
        lineFormat.LineWidth = 15
        lineFormat.Color = RGB(0, 0, 0)
        ' Struktura przechowująca nową definicję TableBorder2
        Dim tableFormat as New com.sun.star.table.TableBorder2
        tableFormat.TopLine = lineFormat
        tableFormat.BottomLine = lineFormat
        tableFormat.IsTopLineValid = True
        tableFormat.IsBottomLineValid = True
        ' Stosuje format tabeli do zakresu "B2:E5"
        Dim oCell as Object
        oCell = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("B2:E5")
        oCell.TableBorder2 = tableFormat
    End Sub
  Makro można zaimplementować w Pythonie w następujący sposób:
    from com.sun.star.table import BorderLineStyle as cStyle
    from scriptforge import CreateScriptService
    
    def tableBorder2Example():
        bas = CreateScriptService("Basic")
        line_format = createUnoStruct("com.sun.star.table.BorderLine2")
        line_format.LineStyle = cStyle.SOLID
        line_format.LineWidth = 18
        line_format.Color = bas.RGB(0, 0, 0)
        table_format = createUnoStruct("com.sun.star.table.TableBorder2")
        table_format.TopLine = line_format
        table_format.BottomLine = line_format
        table_format.IsTopLineValid = True
        table_format.IsBottomLineValid = True
        doc = CreateScriptService("Calc")
        cell = doc.XCellRange("B2:E5")
        cell.TableBorder2 = table_format
  Więcej informacji na temat atrybutów można znaleźć w dokumencie TableBorder2 Struct Reference w dokumentacji interfejsu API LibreOffice.