Calc - řádky, sloupečky a buňky

calc.png V dnešním díle se podíváme na to, jaké rozhraní nabízí OpenOffice.org pro práci s řádky, sloupečky a buňkami.  

Řádky, sloupečky

Výběr řádku, sloupečku

Dim oRow As Object
Dim oColumn As Object
' první řádek (1)
oRow = oSheet.getRows.getByIndex( 0 )
' druhý sloupeček (B)
oColumn = oSheet.getColumns.getByIndex( 1 )

Vlastnosti sloupečku

' šířka sloupčcku (v setinách mm)
oColumn.setPropertyValue("Width", 100)
' optimální šířka - Ano, Ne?
oColumn.setPropertyValue("OptimalWidth", True)
' skrytý / viditelný?
oColumn.setPropertyValue("IsVisible", False)
' zalomení stránky?
oColumn.setPropertyValue("IsStartOfNewPage", False)

Vlastnosti řádku

' výška řádku (v setinách mm)
oRow.setPropertyValue("Height", 100)
' optimální výška?
oRow.setPropertyValue("OptimalHeight", True)
' skrytý / viditelný?
oRow.setPropertyValue("IsVisible", False)
' zalomení stránky?
oRow.setPropertyValue("IsStartOfNewPage", False)

Přidáváme, odstraňujeme sloupeček

' přidej dva sloupečky počínaje sloupečkem D
oSheet.getColumns.insertByIndex( 3, 2 )
' odstraň tři sloupečky počínaje sloupečkem G
oSheet.getColumns.removeByIndex( 6, 3 )

Přidáváme, odstraňujeme řádek

' přidej dva řádky počínaje 4. řádkem
oSheet.getRows.insertByIndex( 3, 2 )
' odstraň tři řádky počínaje 7. řádkem
oSheet.getRows.removeByIndex( 6, 3 )

Buňky

Vybíráme buňku

Dim oCell As Object
' vyber A1 (první číslo sloupeček, druhé řádek)
oCell = oSheet.getCellByPosition( 0, 0 )

Nastavujeme nové hodnoty

' vkládáme text
oCell.setPropertyValue("String", "Toto je buňka A+" )
' vkládáme číslo
oCell.setPropertyValue("Value", 100)
' vkládáme vzorec
oCell.setPropertyValue("Formula", "=A2+A3")

Hodnoty můžeme číst pomocí getPropertyValue nebo přímým přístupem, tzn. sValue = oCell.Text.

Detekujeme typ obsahu buňky

Select Case oCell.Type
        Case com.sun.star.table.CellContentType.EMPTY
                ' buňka je prázdná
        Case com.sun.star.table.CellContentType.VALUE
                ' buňka obsahuje číslo
        Case com.sun.star.table.CellContentType.TEXT
                ' buňka obsahuje řetězec
        Case com.sun.star.table.CellContentType.FORMULA
                ' buňka obsahuje vzorec
End Select
(Jako ve škole) Průměr: 4.43 | Hodnotilo: 7
 

Komentáře

user avatar
Odpovědět
makra, z čeho se učit
15. 08. 2005, 09:05:09
Přečetl jsem článek "řádky, sloupečky a buňky". Lze se nějak v konkrétní instalaci OO dopátrat týchž informací? Když si totiž budu chtít něco naprogramovat, stejně narazím na něco, co v tom článku není, i kdyby byl 10x větší. Původní důvod, proč jsem se začet, byl tento:
Našel jsem sice logické funkce or() and(), ale nikoliv už bitové operátory or, xor, and. Chtěl bych si ty operátory alespoň naprogramovat jako funkce.
user avatar mirozm
Odpovědět
nápoveda
2. 03. 2006, 07:58:20
V oo sú tieto informácie tu ->nápoveda->makra a programovanie->prehlad funkcií->behové funkcie výrazy,operátory->logické operátory(napríklad vaše operátory).
miro
user avatar Milan Uhrák
Odpovědět
No paráda ...
26. 10. 2005, 12:36:32
Síce je to jen lehký úvod, ale co se dá dělet, že, když informací o tomhle Basicu je tak poskrovnu. Existuje vůbec nějaký ucelaný popis funkcí, metod a vlastností všech těch com.sun a podobně? Kdysi jsem hledal, možná špatně, a pak mě to přestalo bavit, (výsledek = 0).
Takže díky alespoň za základy ...
user avatar Milan Uhrák
Odpovědět
Ach ta makra ...
5. 12. 2005, 11:29:28
Tak jsem si zkoušel pohrát s těmi makry dle vašeho návodu. Nevím, nakolik jste své příklady ověřoval v praxi, ale já byl zklamán.

Např. po nadefinování oCell = .... jsem chtěl změnit obsah dané buňky. Ale nic se nestalo. Tak jsem hledal v nápovědě, až jsem našel funkce MsgBox a Error. Pomocí nich jsem se dopídil, že funkce SetPropertyValue provádí jakousi pitominu, a Basicu se pranic nelíbila. Hledal jsem dál, až jsem narazil na Andrewmacros nebo jak se to jmenovalo. Je to síce english, ale co se dá dělat. tam Anrew (příjmení si nepamatuji) použil (jednou) pro změnu obsahu buňky toto
oCell.SetValue(250) a to funguje !
pak mě napadlo pro řetězce zkusit oCell.SetString("pokus") .... funguje!!!
SetFormula jsem nezkoušel (ani nevím, jestli existuje) ale je to slibný pokrok.
I když jsem byl zpočátku zklamán neúspěchem, chci vás znovu pochválit a poděkovat za článek a povzbudit vás k dalšímu pokračování + příklady.
Zájemci o Andrewa ať googlí, protože už si nepamatuji, kde jsem to stáhl, (ale je to GPL publikace - nebo jak se tomu říká - veřejně ke stažení (PDF, asi 8 MB)
S pozdravem
Milan
user avatar Zaboj H.
Odpovědět
Ta lenost
24. 01. 2006, 18:59:19
http://www.pitonyak.org/AndrewMacro.pdf
user avatar Anonymní
Odpovědět
Díky za odkaz, vynikající
24. 09. 2006, 18:19:02
Díky za odkaz, vynikající dokumentace. Kdyby bylo něco takovýho v češtině (tak rozsáhlýho a podrobnýho), bylo by to super...
user avatar Kamil Neuwirth
Odpovědět
Vzorce
3. 02. 2006, 14:07:46
Zkouším OpenOffice a celkem to jde. Byl jsem zvyklý na MS Office. Mohl by mi někdo poradit, kde bych sehnal popis funcí v OO nebo ještě lépe srovnávací tabulku vzorec v OO odpovídá vzorci v Excelu ?

Díky moc.

kamil.neuwirth@seznam.cz
user avatar mirozm
Odpovědět
popis funkcií nájdete
2. 03. 2006, 08:11:47
popis funkcií nájdete priamo pri zadávaní stačí kliknúť na f(x) v riadku vzorcov a pri označení funkcie sa na pravej strane zobrazí jej popis.
user avatar PetLahev
Odpovědět
Nefunguje ?!
1. 03. 2006, 18:35:19
Zdravim

zkousim napsat neco pod OO okopiroval jsem Vas priklad pro praci s radky a sloupecky a hlasi mi to chybu

BASIC - chyba pri behu.
Promena objektu neni nastavena.

Kod je okopirovany tady ze stranky
Sub Zkouska
Dim oRow As Object
Dim oColumn As Object
' první řádek (1)
oRow = oSheet.getRows.getByIndex( 0 )
' druhý sloupeček B)
oColumn = oSheet.getColumns.getByIndex( 1 )

end sub

Nevite co s tim, celkem me to zaskocilo, necekal jsem ze to spadne hned tady.

Diky Premek
user avatar PetLahev
Odpovědět
Nefunguje ?!
1. 03. 2006, 18:36:50
(jeste jednou citelne, snad)
Zdravim

zkousim napsat neco pod OO okopiroval jsem Vas priklad pro praci s radky a sloupecky a hlasi mi to chybu

BASIC - chyba pri behu.
Promena objektu neni nastavena.

Kod je okopirovany tady ze stranky
Sub Zkouska
Dim oRow As Object
Dim oColumn As Object
' první řádek (1)
oRow = oSheet.getRows.getByIndex( 0 )
' druhý sloupeček B)
oColumn = oSheet.getColumns.getByIndex( 1 )

end sub

Nevite co s tim, celkem me to zaskocilo, necekal jsem ze to spadne hned tady.

Diky Premek
user avatar Anonymní
Odpovědět
Příklad není kompletní
16. 05. 2006, 20:34:15
Aby vám to fungovalo, musíte si nejprve inicializovat promennou oSheet
Doplnte si:

Dim oDoc as Object, oSheet as Object
...

oDoc = ThisComponent
oSheet = oDoc.getSheets.getByIndex(0)

...a zbytek by vám měl fungovat.

Všechny příklady jsou hodně odfláknuté a hlavně nepraktické. Normální člověk se to podle takových zmatených a nekompletních informací nemůže naučit. A pak se divte, že 90% uživatelů používá MS Office. Aby ne, když je k tomu pořádná dokumentace, tutorialy, školení a další a další věci.
user avatar ViSoft
Odpovědět
Zrejme systemova chyba - please HELP
21. 03. 2008, 17:32:38
Dobrý den,
vyzkoušel jsem tento příklad i příklad
z dokumentace Andrew, ale oba se stejným
výsledkem - chybovou hláškou:

BASIC - chyba při běhu
Vyskytla se vyjímka
Type: com.sun.star.container.NoSuchElementExceptior
Message: .

Souvisí to nějak s verzí OO? Nebo s instalací?
Prosím poraďte. Díky

Odpovědět

 

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu.

 
 
 
woo jaw demo hz