Hódnoty do wobłukow čitać a pisać

Makra w LibreOffice 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ł.

note

Wšě přikłady, kotrež so na tutej stronje předstajeja, dadźa so do Basic kaž tež do Python implementować.


Přistup k jednotliwej celi

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")
  
note

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.


Hódnoty, znamješkowe rjećazki a formle

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)


note

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řistup k wobłukam w rozdźělnych tabelach

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]
  

Biblioteku ScriptForge wužiwać

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)

note

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)
  

Prošu podpěrajće nas!