Pomoc za LibreOffice 25.2
Makra w LibreOffice Calc cesto muse gódnoty z/do tabelow cytaś a pisaś. Toś ten bok pomocy wšake wašnje póstupowanja wopisujo, pśistup k tabelam a wobceŕkam dostaś, aby wy jich gódnoty cytał abo pisał.
Wšykne pśikłady, kótarež se na toś tom boku pśedstajaju, daju se do Basic ako teke do Python implementěrowaś.
Slědujucy pśikład numerisku gódnotu 123 do cele "A1" aktualneje tabele zapódawa.
    Dim oSheet as Object
    Dim oCell as Object
    oSheet = ThisComponent.CurrentController.getActiveSheet()
    oCell = oSheet.getCellRangeByName("A1")
    oCell.setValue(123)
  To samske dajo se z Python dojśpiś:
    doc = XSCRIPTCONTEXT.getDocument()
    sheet = doc.getCurrentController().getActiveSheet()
    cell = sheet.getCellRangeByName("A1")
    cell.setValue(123)
  Źiwajśo na to, až pjerwjejšne pśikłady z pomocu wobceŕkowego mjenja "A1" pśistup k celi maju. Pśistup k celam jo teke móžny, gaž indekse wužywaśo, ako by tabela matriks była, źož słupy a smužki su wót nul indicěrowane.
Móžośo to z pomocu metody getCellByPosition(colIndex, rowIndex) cyniś, kótaraž słupowy a smužkowy indeks pśiwzejo. Slědujucy pśikład w Basic tekstowu gódnotu w celi "C1" (słup 2, smužka 0) změnja.
    oSheet = ThisComponent.CurrentController.getActiveSheet()
    oCell = oSheet.getCellByPosition(2, 0)
    oCell.setString("Hello")
  Toś ten pśikład dajo se teke w Python ako slědujo implementěrowaś:
    doc = XSCRIPTCONTEXT.getDocument()
    sheet = doc.getCurrentController().getActiveSheet()
    cell = sheet.getCellByPosition(2, 0)
    cell.setString("Hello")
  Głowny rozdźěl mjazy skriptami Python a Basic w tom wobstoj, kak móžośo pśistup k tabelowemu objektoju z pomocu kontekstoweje wariable XSCRIPTCONTEXT dostaś. Pó tom su wšykne metody a kakosći w Basic a Python identiske.
Cele Calc mógu tśi typy gódnotow měś: numeriske, znamuškowe rjeśazki a formule. Kuždy typ ma swóje metody set a get:
| Typ | Get Method | Set Method | 
|---|---|---|
| Numeriski | getValue() | setValue(newValue) | 
| Tekst | getString() | setString(newString) | 
| Formula | getFormula() | setFormula(newFormula) | 
Datumowa a pjenjezne gódnoty se w Calc ako numeriske gódnoty naglědaju.
Slědujuce pśikład numeriskej gódnośe do celeju "A1" a "A2" zapódawa a zasajźujo formulu do cele "A3", kótaraž multiplikaciju toś teju gódnotowu wrośa.
    oSheet = ThisComponent.CurrentController.getActiveSheet()
    oCell = oSheet.getCellRangeByName("A1")
    oCell.setValue(10)
    oCell = oSheet.getCellRangeByName("A2")
    oCell.setValue(20)
    oCell = oSheet.getCellRangeByName("A3")
    oCell.setFormula("=A1*A2")
  Pjerwjejšne pśikłady jano aktiwnu tabelu wužywaju, aby operacije wuwjadli. Z pomocu jich indeksow abo mjenjow jo pśistup k celowym wobceŕkam w rozdźělnych tabelach móžny.
Slědujucy pśikład numerisku gódnotu do cele "A1" tabele z mjenim „Sheet2“ zapódawa.
    oSheet = ThisComponent.Sheets.getByName("Sheet2")
    oCell = oSheet.getCellRangeByName("A1")
    oCell.setValue(123)
  Toś ten pśikład dajo se teke w Python ako slědujo implementěrowaś:
    doc = XSCRIPTCONTEXT.getDocument()
    sheet = doc.Sheets["Sheet2"]
    cell = sheet.getCellRangeByName("A1")
    cell.setValue(123)
  Pśistup k tabelam jo teke z pomocu nulobazěrowanych indeksow móžny, kótarež pódawaju, kótara tabela se źiwajo na pórěd, w kótaremž se w dataji Calc zjawiju, pokazujo.
Wužywajśo w Basic metodu Sheets(sheetIndex) město metody getByName, ako se dołojce pokazujo:
    oSheet = ThisComponent.Sheets(0)
  To dajo se na pódobnu wašnju w Python pśewjasć:
    sheet = doc.Sheets[0]
  Słužba Calc biblioteki ScriptForge dajo se wužywaś, aby celowe gódnoty ako slědujo dostała a stajiła:
    ' Zacytajo biblioteku ScriptForge
    GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
    ' Dostawa pśistup k aktualnemu dokumentoju Calc
    oDoc = CreateScriptService("Calc")
    ' Staja gódnotu celow A1 a A2
    oDoc.setValue("A1", "Hello")
    oDoc.setValue("A2", 123)
  Metoda setValue dajo se wužywaś, aby numeriske ako teke tekstowe gódnoty stajiła. Aby celowu formulu póstajił, wužywajśo metodu setFormula.
Ze słužbu Calc móžośo z jadnučkeju kodoweju smužku celowe gódnoty wótwołaś a stajiś. Slědujucy pśikład gódnotu ze cele "A1" wótwołujo a pokazujo ju w zdźěleńskem pólu.
    Dim val as Variant, oDoc as Object
    oDoc = CreateScriptService("Calc")
    val = oDoc.getValue("A1")
    MsgBox val
  Biblioteka ScriptForge pśistup k wobceŕkam w rozdźělnych tabelach wólažcujo, ako se w slědujucem pśikłaźe pokazujo:
    Dim val1, val2
    ' Wótwołujo celu "A1" z tabele z mjenim "Sheet1"
    val1 = oDoc.getValue("Sheet1.A1")
    ' Wótwołujo celu "B3" z tabele z mjenim "Sheet2"
    val2 = oDoc.getValue("Sheet2.B3")
    ' Placěrujo wuslědk do cele "A1" tabele "Report"
    Dim result : result = val1 * val2
    oDoc.setValue("Report.A1", result)
  Pśikłady górjejce daju se teke w Python ako slědujo implementěrowaś:
    from scriptforge import CreateScriptService
    doc = CreateScriptService("Calc")
    doc.setValue("A1", "Hello")
  
    doc = CreateScriptService("Calc")
    bas = CreateScriptService("Basic")
    val = doc.getValue("A1")
    bas.MsgBox(val)
  
    first_val = doc.getValue("Sheet1.A1")
    second_val = doc.getValue("Sheet2.B3")
    result = first_val * second_val
    doc.setValue("Report.A1", result)