Promotic
WikipediaLinkedInYoutubeTwitterFacebook

Calc

Calc představuje tabulkový kalkulátor. Ten je součástí kancelářského balíku OpenOffice a LibreOffice a je alternativou k programu Microsoft Excel. Používá se pro tvorbu tabulek, ale také pro komplexní soustavy propojených dat se vzorci a funkcemi. Tabulka je ukládána v novém mezinárodním standardu pro dokumenty. Je založen na XML a může být přečten i tehdy, když uživatel nemá OpenOffice nebo LibreOffice. Výchozím formátem pro tabulky Calc je soubor *.ods.

 
Práce s databází typu Calc (Libre Office)
- Na soubory typu *.ods není v současnosti možné standardní připojení přes ADO Provider. Tím se vylučuje použití objektu PmAdo nebo PmDatabase.
- K tabulkovým souborům lze z PROMOTIC aplikace přistupovat skriptem přes API rozhraní Libre Office, Open Office.
 
Příklad1:
Vytvoření nového prázdného souboru, nastavení reference na první sešit a vytvoření popisu u prvního řádku tabulky. Zápis hodnot do druhého řádku tabulky a uložení souboru na lokální disk.
VBScriptVyber a zkopíruj do schránky

Dim oSM, oCR, oDesk, oDoc, oSheet, oCell, s, sPath, sFilePath, bDone, args(), arg()
sPath = Pm.EvalMacro("$path.data:")
s = Replace(sPath, "\", "/")
sFilePath = s & "test2.ods"

'The service manager is always the starting point
'If there is no office running then an office is started up
Set oSM = CreateObject("com.sun.star.ServiceManager")

'Create the CoreReflection service that is later used to create structs
Set oCR = oSM.createInstance("com.sun.star.reflection.CoreReflection")

'Create the Desktop
Set oDesk = oSM.createInstance("com.sun.star.frame.Desktop")

'Open a new empty calc document
Set oDoc = oDesk.loadComponentFromURL("private:factory/scalc", "_blank", 0, args)

'Create a sheet object
Set oSheet = oDoc.getSheets.GetByIndex(0)

Set oCell = oSheet.GetCellByPosition(0, 0)
oCell.String = "A col"
oCell.CellBackColor = 6710932

Set oCell = oSheet.GetCellByPosition(1, 0)
oCell.String = "B col"
oCell.CellBackColor = 6710932

Set oCell = oSheet.GetCellByPosition(2, 0)
oCell.String = "C col"
oCell.CellBackColor = 6710932

oSheet.GetCellByPosition(0, 1).Value = 123
oSheet.GetCellByPosition(1, 1).Value = 222
oSheet.GetCellByPosition(2, 1).Value = 333

bDone = oDoc.storeAsURL("file:///" & sFilePath, arg)
oDoc.Close false
Set oDoc = Nothing
Set oDesk = Nothing
Set oCR = Nothing
Set oSM = Nothing
Příklad2:
Otevření existujícího souboru, nastavení reference na první sešit tabulky. Zápis hodnot do třetího řádku tabulky a uložení souboru na lokální disk.
VBScriptVyber a zkopíruj do schránky

Dim oSM, oCR, oDesk, oDoc, oSheet, oCell, s, sPath, sFilePath, bDone, args(), arg()
sPath = Pm.EvalMacro("$path.data:")
s = Replace(sPath, "\", "/")
sFilePath = s & "test2.ods"

'The service manager is always the starting point
'If there is no office running then an office is started up
Set oSM = CreateObject("com.sun.star.ServiceManager")

'Create the CoreReflection service that is later used to create structs
Set oCR = oSM.createInstance("com.sun.star.reflection.CoreReflection")

'Create the Desktop
Set oDesk = oSM.createInstance("com.sun.star.frame.Desktop")

'Open calc document
Set oDoc = oDesk.loadComponentFromURL("file:///" & sFilePath, "_blank", 0, args)

'Create a sheet object
Set oSheet = oDoc.getSheets.GetByIndex(0)

oSheet.GetCellByPosition(0, 2).Value = 375
oSheet.GetCellByPosition(1, 2).Value = Pm.Round(Pm.Random(0, 100), 0.1)
oSheet.GetCellByPosition(2, 2).Value = Pm.Round(Pm.Random(0, 100), 0.1)

bDone = oDoc.storeAsURL("file:///" & sFilePath, arg)
oDoc.Close false
Set oDoc = Nothing
Set oDesk = Nothing
Set oCR = Nothing
Set oSM = Nothing
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice