Formátování buněk – barvy, zarovnání, orientace...

programovani.png Formátování je nedílnou součástí každého dokumentu, který má vypadat alespoň trochu k světu. Formátovat lze buď pomocí stylů, nebo přímo nastavovat buňky, oblasti a listy. Vzhledem k rozsáhlosti tématu budou o formátování celkem tři díly. V tomto díle se dozvíte, jak nastavovat barvy, pozadí a zarovnání v buňkách. Naučíte se také, jak nastavit buňku jako zamknutou a skrytou při tisku.  

Podle mého názoru je lepší nastavovat formáty přímo v dokumentu, nebo přes Formát | Podmíněné formátování a ochranu provádět makrem přes uzamčení buněk a listů. Je to programově rychlejší a jednodušší, ale je možné, že to nemusí vyhovovat každému. Pokud budete makrem vytvářet zcela nový dokument, nastavení pomocí makra se nevyhnete. Samozřejmě také nejde pomocí podmíněného formátování nastavit například záhlaví a zápatí. Spolu s jeho vlastnostmi můžete i toto nastavovat automaticky pomocí makra.

TIP: Platí, že všechna nastavení, která neměníte makrem, jsou dána aktuálním přiřazeným stylem/formátem. Není nutné například nastavovat makrem orientaci stránky na výšku, protože jde o výchozí nastavení. Na cokoliv, co nezměníte, bude použito výchozí formátování.

K nejčastějším změnám ve formátování patří změna barvy:

Barvy v OpenOffice.org

K nastavení barvy jako takové slouží funkce RGB. Tato funkce požaduje tři vstupní hodnoty. Jsou to hodnoty pro červenou, zelenou a modrou barvu. Pro představu si zadejte volbu Nástroje | Volby | Barvy, kde si můžete zkusit nastavit vlastní barvy, právě prostřednictvím funkce RGB. Makro můžete zapsat například takto:

dim cervena as integer, zelena as integer, modra as integer
cervena = 1
zelena = 130
modra = 255
rozsah.CellBackColor = RGB(cervena, zelena, modra)

Nebo použijete výše zmíněný, ale kratší zápis:

rozsah.CellBackColor = RGB(1, 130, 255)

Funkce vrátí jednu číselnou hodnotu barvy. V podstatě sloučí všechny tři údaje do jednoho. Čísla jednotlivých barev můžete zadávat v rozmezí 0–255. Kombinací je mnoho. Pro nastavení barev slouží i jiná funkce (QBColor), kde nastavujete přímo jedno číslo barvy. Doporučuji však používat funkci RGB, a to proto, že si můžete barvy vyzkoušet ještě předtím, než je zadáte do makra. Zkoušku můžete provést přes volby Nástroje | Volby | Barvy, kde je možné nastavení vlastních barev právě pomocí funkce RGB.

Nastavení vlastních barev v OpenOffice.org Nastavení vlastních barev v OpenOffice.org

TIP: Ještě existují funkce Red, Green a Blue. Tyto funkce jsou opakem funkce RGB. Zatímco RGB tyto hodnoty skládá do výsledné barvy, pomocí těchto funkcí můžete zjistit, jaké konkrétní hodnoty má barva, kterou testujete (zjistí jednotlivé barvy funkce RGB).

Formátování buňky

Pokud chcete formátovat buňku, musíte k ní získat přístup. To již umíte. Když je buňka definovaná (přiřazená k proměnné), formátujete ji názvem proměnné, přiřazením k příkazu a nastavením hodnoty formátu. Toto již také znáte, jen ne s buňkami.

bunka = thisComponent.sheets(0).getCellByPosition(0, 0)
bunka.CellBackColor = RGB (128, 0,128)

Tímto způsobem jste nastavili pozadí buňky na fialovou.

Nastavení barvy v buňce Nastavení barvy v buňce

Pokud chcete nastavovat více vlastností, využijte pomoc funkce with, se kterou jste se již v tomto seriálu také setkali.

with bunka
 .CellBackColor = RGB (128, 0,128)
 ' nastavení dalších vlastností
end with

TIP: Samozřejmě nemusíte nastavovat každou buňku zvlášť. Vše zde uvedené platí i pro oblasti buněk, jen do proměnné přiřadíte jejich rozsah. Např. rozsah = thisComponent.sheets(0).getCellRangeByPosition(0, 0, 5, 5) → rozsah.CellBackColor = RGB(128, 0, 128).

Pozadí buňky

Jako další možnost při nastavení pozadí buňky je, mimo nastavení barvy, zda se při změně barvy má měnit i barva písma tak, aby bylo vždy kontrastní. Nastavení provedete pomocí příkazu IsCellBackGroundTransparent.

bunka = thisComponent.sheets(0).getCellByPosition(0,0)
bunka.IsCellBackGroundTransparent = True

Zarovnání v buňce

Stejně jako v sešitu nastavujete zarovnání buněk v makru. Zarovnání jako takové můžete rozdělit na horizontální (vodorovné) a vertikální (svislé).

Vodorovné zarovnání

Všech pět druhů zarovnání nastavujete následujícím způsobem.

bunka = thisComponent.sheets(0).getCellByPosition(0,0)
bunka.HoriJustify = com.sun.star.table.CellHoriJustify.STANDARD ' standardní
Další možnosti nastavení jsou:
.CellHoriJustify.LEFT ' vlevo
.CellHoriJustify.RIGHT ' vpravo
.CellHoriJustify.CENTER ' na střed 
.CellHoriJustify.BLOCK ' do bloku

Nastavení zarovnání zprava Nastavení zarovnání zprava

TIP Standardní zarovnání se řídí obsahem buňky. U textu je nastaveno zarovnání vlevo, u čísel vpravo.

Svislé zarovnání

Základní volby standard, nahoru, dolů a na střed nastavujete obdobně.

bunka = thisComponent.sheets(0).getCellByPosition(0,0)
bunka.VertJustify = com.sun.star.table.CellVertJustify.STANDARD ' standardní
I zde je více možností nastavení:
.CellVertJustify.TOP ' nahoru
.CellVertJustify.BOTTOM ' dolu
.CellVertJustify.CENTER ' na střed 

Nastavení zarovnání nahoru Nastavení zarovnání nahoru

Orientace buňky

Orientace určuje, jakým směrem bude v buňce veden text. Nastavení opět totožné:

bunka = thisComponent.sheets(0).getCellByPosition(0,0)
bunka.Orientation = com.sun.star.table.CellOrientation.STANDARD ' standardní
Pro ostatní nastavení použijete tyto příkazy
.CellOrientation.TOPBOTTOM ' zhora dolu
.CellOrientation.BOTTOMTOP ' zdola nahoru
.CellOrientation.STACKED ' pod sebe 

Nastavení orientace v buňce shora dolu Nastavení orientace v buňce shora dolu

Rotace

Když již umíte nastavit centrování a směr textu, naučte se i rotovat text o určený počet stupňů.

bunka = thisComponent.sheets(0).getCellByPosition(0,0)
bunka.RotateAngle = 4500 ' rotace o 45° (zadáváte v setinách stupňů)

Nastavení rotace v buňce o 45 ° Nastavení rotace v buňce o 45 °

Uzamčení buněk

Při výběru Formát | Buňky, záložka Ochrana buňky se nabízí výběr uzamčení/skrytí buněk. Makrem tyto vlastnosti nastavujete velmi jednoduše pomocí několika příkazů.

Záložka Ochrana buňky při formátování buněk

Záložka Ochrana buňky při formátování buněk

Ochranu buňky provedete pomocí struktury com.sun.star.util.CellProtection, kterou následně přiřadíte k příkazu k ochraně buňky.

oblast = thisComponent.sheets(0).getCellRangeByName("A1:D5")
dim ochrana as new com.sun.star.util.CellProtection
with ochrana
 .IsFormulaHidden = True
 .IsHidden = True
 .IsLocked = True
 .IsPrintHidden = True
 end With 
oblast.CellProtection = ochrana

POZOR: všechny tyto vlastnosti se projeví teprve po uzamčení listu. Uzamknout list již umíte (list.Protected("heslo"). Pokud nebude list uzamčen, neprojeví se žádný z nastavených formátů.

Další možnosti formátování v Calcu si ukážeme v dalším díle. Zejména se budeme věnovat ohraničení a dalším vlastnostem buněk.

(Jako ve škole) Průměr: 1.29 | Hodnotilo: 7
 

Komentáře

user avatar Ludvík Trnka
Odpovědět
Formátování buněk – barvy, zarovnání, orientace...IsCellBackGroundTransparent
22. 01. 2018, 21:09:23
Podle popisu v originále se příkaz IsCellBackGroundTransparent chová trochu jinak než je zde popsáno: IsCellBackgroundTransparent (Boolean) - sets the background color to transparent. tzn. buňku odbarví v podstatě do základního nastavení. Výše je uvedeno něco o kontrastním textu, to moc nechápu co se tím myslí. Resp. chápu, ale změna barvy textu černá/bílá v závislosti na pozadí je myslím si zcela automatická, možná se ani nedá ovlivnit, ale to se jen domnívám.
Mám ale zajímavou zkušennost, pokud buňku zbarvíte na černo
bunka.CellBackColor = RGB (0,0,0)
text v buňce se změní z černého na bílý
a poté ji odbarvíte
bunka.IsCellBackGroundTransparent = 1
text v buňce zůstane bílý čili neviditelný. Pokud to uděláte ručně tak je vše v pořádku ale makrem se to nějak nevrací.
user avatar neutr
Odpovědět
Re:Formátování buněk – barvy, zarovnání, orientace...IsCellBackGroundTransparent
23. 01. 2018, 12:28:53
Ludvíku Dan už tady nebyl od roku 2014. Byl velmi schopný a také agilní. Bohu žel nevím proč už nechodí - ale proto odpovím já.

Transparentní nastavení je implicitní - tedy průhledné. To má číslo barvy -1. Ostatní barvy jsou číslem od jedničky nahoru. A ty jsou neprůhledné. problém je když se dá obrázek na pozadí, tak je potřeba průhlednosti aby byl vidět jen obsah buňky na obrázkem.

To s kontrastním textem chápete dobře. Automaticky se mění barva písma když by byla stejná jako pozadí. Ale děje se tak jen v několika případech.

Nevím přesně k čemu to potřebujete ale použijte funkci =BARVAPOZADI() která je někde ve fóru uvedena. Už jsem udělal i inovaci pro LO přímo do buňky. Dáte pozadí a barvu písma (můžete tam i něco napsat aby byla barva vidět. D té samé buňky pustíte =COLORS() a tam se řádek zdvojnásobí přičemý na prvním řádku je barva pozadí a na druhém barva písma. Už to není funkce - ale text takže se dá spustit mockrát a převzít barevnou školu z cizího schematu. Bohu žel takhle to funguje jen u LO a nikoliv AOO. Tam se musí použít původní funkce.

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.

 
Daniel Sedláček

Daniel Sedláček

Amatérsky se věnuji programování maker od podzimu 2010.
Aktivní jsem na fóru od ledna 2011.
Od července 2011 spolupracuji i jako moderátor fóra.

Využívám pouze OpenOffice.org (LibreOffice nemám nainstalován).

 
 
 
woo jaw demo hz