Pomoc za LibreOfficeDev 25.8
Makra w LibreOfficeDev Calc husto dyrbja hódnoty z/do tabelow čitać a pisać. Tuta strona pomocy wšelake wašnja postupowanja wopisuje, přistup k tabelam a wobłukam dóstać, zo byšće jich hódnoty čitał abo pisał.
Wšě přikłady, kotrež so na tutej stronje předstajeja, dadźa so do Basic kaž tež do Python implementować.
Slědowacy přikład numerisku hódnotu 123 do cele "A1" aktualneje tabele zapodawa.
    Dim oSheet as Object
    Dim oCell as Object
    oSheet = ThisComponent.CurrentController.getActiveSheet()
    oCell = oSheet.getCellRangeByName("A1")
    oCell.setValue(123)
  Samsne da so z Python docpěć:
    doc = XSCRIPTCONTEXT.getDocument()
    sheet = doc.getCurrentController().getActiveSheet()
    cell = sheet.getCellRangeByName("A1")
    cell.setValue(123)
  Dźiwajće na to, zo předchadne přikłady z pomocu wobłukoweho mjena "A1" přistup k celi maja. Přistup k celam je tež móžny, hdyž indeksy wužiwaće, kaž by tabela matriks była, hdźež špalty a linki su wot nul indikowane.
Móžeće to z pomocu metody getCellByPosition(colIndex, rowIndex) činić, kotraž špaltowy a linkowy indeks přijima. Slědowacy přikład w Basic tekstowu hódnotu w celi "C1" (špalta 2, linka 0) měnja.
    oSheet = ThisComponent.CurrentController.getActiveSheet()
    oCell = oSheet.getCellByPosition(2, 0)
    oCell.setString("Hello")
  Tutón přikład da so tež w Python takle implementować:
    doc = XSCRIPTCONTEXT.getDocument()
    sheet = doc.getCurrentController().getActiveSheet()
    cell = sheet.getCellByPosition(2, 0)
    cell.setString("Hello")
  Hłowny rozdźěl mjez skriptami Python a Basic w tym wobsteji, kak móžeće přistup k tabelowemu objektej z pomocu kontekstoweje wariable XSCRIPTCONTEXT dóstać. Po tym su wšě metody a kajkosće w Basic a Python identiske.
Cele Calc móža tři typy hódnotow měć: numeriske, znamješkowe rjećazki a formle. Kóždy typ ma swoje metody set a get:
| Typ | Get Method | Set Method | 
|---|---|---|
| Numeriski | getValue() | setValue(newValue) | 
| Tekst | getString() | setString(newString) | 
| Formla | getFormula() | setFormula(newFormula) | 
W Calc maja datumowe a měnowe hódnoty za numeriske hódnoty.
Slědowace přikład numeriskej hódnoće do celeju "A1" a "A2" zapodawa a zasadźuje formlu do cele "A3", kotraž multiplikaciju tuteju hódnotow wróć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")
  Předchadne přikłady jenož aktiwnu tabelu wužiwaja, zo bychu operacije wuwjedli. Z pomocu jich indeksow abo mjenow je přistup k celowym wobłukam w rozdźělnych tabelach móžny.
Slědowacy přikład numerisku hódnotu do cele "A1" tabele z mjenom „Sheet2“ zapodawa.
    oSheet = ThisComponent.Sheets.getByName("Sheet2")
    oCell = oSheet.getCellRangeByName("A1")
    oCell.setValue(123)
  Tutón přikład da so tež w Python takle implementować:
    doc = XSCRIPTCONTEXT.getDocument()
    sheet = doc.Sheets["Sheet2"]
    cell = sheet.getCellRangeByName("A1")
    cell.setValue(123)
  Přistup k tabelam je tež z pomocu nulobazowanych indeksow móžny, kotrež podawaja, kotra tabela so dźiwajo na porjad, w kotrymž so w dataji Calc jewja, pokazuje.
Wužiwajće w Basic metodu Sheets(sheetIndex) město metody getByName, kaž so deleka pokazuje:
    oSheet = ThisComponent.Sheets(0)
  To da so na podobne wašnje w Python přewjesć:
    sheet = doc.Sheets[0]
  Słužba Calc biblioteki ScriptForge da so wužiwać, zo by celowe hódnoty takle dóstała a stajiła:
    ' Začita biblioteku ScriptForge
    GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
    ' Dóstawa přistup k aktualnemu dokumentej Calc
    oDoc = CreateScriptService("Calc")
    ' Staja hódnotu celow A1 a A2
    oDoc.setValue("A1", "Hello")
    oDoc.setValue("A2", 123)
  Metoda setValue da so wužiwać, zo by numeriske kaž tež tekstowe hódnoty stajiła. Zo byšće celowu formlu postajił, wužiwajće metodu setFormula.
Ze słužbu Calc móžeće z jeničkej kodowej linku celowe hódnoty wotwołać a stajić. Slědowacy přikład hódnotu ze cele "A1" wotwołuje a pokazuje ju w zdźělenskim polu.
    Dim val as Variant, oDoc as Object
    oDoc = CreateScriptService("Calc")
    val = oDoc.getValue("A1")
    MsgBox val
  Biblioteka ScriptForge přistup k wobłukam w rozdźělnych tabelach wosnadnja, kaž so w slědowacym přikładźe pokazuje:
    Dim val1, val2
    ' Wotwołuje celu "A1" z tabele z mjenom "Sheet1"
    val1 = oDoc.getValue("Sheet1.A1")
    ' Wotwołuje celu "B3" z tabele z mjenom "Sheet2"
    val2 = oDoc.getValue("Sheet2.B3")
    ' Placěruje wuslědk do cele "A1" tabele "Report"
    Dim result : result = val1 * val2
    oDoc.setValue("Report.A1", result)
  Přikłady horjeka dadźa so tež w Python takle implementować:
    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)