Promotic
WikipediaLinkedInYoutubeTwitterFacebook

Calc

Calc przedstawia program tabelkowy. Ten jest częścią składową pakietu OpenOffice i LibreOffice i jest alternatywą programu Microsoft Excel. Stosowany jest do tworzenia nie tylko tabelek ale również kompleksowych zestawów powiązanych danych z wzorcami oraz funkcjami. Tabelka jest zapisywana w nowym międzynarodowym standardzie dla dokumentów. Jest on oparty na XML i można go odczytać również wtedy, kiedy użytkownik nie posiada OpenOffice lub LibreOffice. Wyjściowym formatem dla tabelki Calc jest plik *.ods.

 
Praca z bazami danych typu Calc (Libre Office)
- Aktualnie brak standardowego podłączenia do plików typu *.ods poprzez ADO Provider. To eliminuje możliwość zastosowania obiektu PmAdo lub PmDatabase.
- Do takich plików można z poziomu aplikacji PROMOTIC przystępować skryptowo poprzez interfejs API Libre Office, Open Office.
 
Przykład1:
Wytworzenie nowego pustego pliku, ustawienie referencji na pierwszy arkusz oraz wytworzenie opisu w pierwszym wierszu tabelki. Zapis wartości do drugiego wierszu tabelki oraz zapis pliku na dysk lokalny.
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
Przykład2:
Otwarcie istniejącego pliku, ustawienie referencji na pierwszy arkusz tabelki. Zapis wartości do trzeciego wiersza tabelki oraz zapis pliku na dysk lokalny.
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
Patrz również:
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice