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. Slouží 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
PmaAdo nebo
PmaDatabase.
- K tabulkovým souborům lze z aplikace PROMOTIC 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 disk.
JavaScriptVyber a zkopíruj do schránky
function onClose()
{
oDoc.Close(false);
}
var oSM, oCR, oDesk, oDoc, oSh, oSheet, oCell, s, sPath, sFilePath, bDone;
var jArr = Pm.CreatePmArray().Create(1);
var args = jArr.SaveToVbArray();
var arg = jArr.SaveToVbArray();
sPath = Pm.DiscGetPath("data:");
s = Pm.StringReplace(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
oSM = Pm.AxGetObject("new", "com.sun.star.ServiceManager");
// Create the CoreReflection service that is later used to create structs
oCR = oSM.createInstance("com.sun.star.reflection.CoreReflection");
// Create the Desktop
oDesk = oSM.createInstance("com.sun.star.frame.Desktop");
// Open a new empty Calc document
oDoc = oDesk.loadComponentFromURL("private:factory/scalc", "_blank", 0, args);
// Create a sheet object
oSh = oDoc.getSheets();
oSheet = oSh.GetByIndex(0);
oCell = oSheet.getCellByPosition(0, 0);
oCell.String = "A col";
oCell.CellBackColor = 6710932;
oCell = oSheet.getCellByPosition(1, 0);
oCell.String = "B col";
oCell.CellBackColor = 6710932;
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);
pMe.Root.AddEventTimer(2000, 1, onClose);
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 disk.
JavaScriptVyber a zkopíruj do schránky
function onClose()
{
oDoc.Close(false);
}
var oSM, oCR, oDesk, oDoc, oSh, oSheet, oCell, s, sPath, sFilePath, bDone;
var jArr = Pm.CreatePmArray().Create(1);
var args = jArr.SaveToVbArray();
var arg = jArr.SaveToVbArray();
sPath = Pm.EvalMacro("$path.data:");
s = Pm.StringReplace(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
oSM = Pm.AxGetObject("new", "com.sun.star.ServiceManager");
// Create the CoreReflection service that is later used to create structs
oCR = oSM.createInstance("com.sun.star.reflection.CoreReflection");
// Create the Desktop
oDesk = oSM.createInstance("com.sun.star.frame.Desktop");
// Open Calc document
oDoc = oDesk.loadComponentFromURL("file:///" + sFilePath, "_blank", 0, args);
// Create a sheet object
oSh = oDoc.getSheets();
oSheet = oSh.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);
pMe.Root.AddEventTimer(2000, 1, onClose);