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.
Dim oSM, oCR, oDesk, oDoc, oSheet
Dim oCell, args(), arg(), s, sPath, sFilePath, bDone
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.
Dim oSM, oCR, oDesk, oDoc, oSheet
Dim oCell, args(), arg(), s, sPath, sFilePath, bDone
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("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