Calc - pracujeme s listy

calc.png Dnešním dnem zahájime seriál o programování maker v OpenOffice.org BASICu se zaměřením na Calc. Jednotlivé články budou krátké a vždy se budou zabývat jen jedním okruhem. Vycházet budou v rozmezí několika dní tak, aby každý z vás stihl všechny informace vstřebat, o víkendu vše vyzkoušet, ...  

Aktuální dokument

Na aktuální dokument je možné se odkázat pomocí ThisComponent.

Dim oDoc As Object
oDoc = ThisComponent

Typ dokumentu můžeme zkontrolovat pomocí následující funkce:

Function IsSpreadsheetDocument( oDoc As Object ) As Boolean
   IsSpreadsheetDocument = oDoc.supportsService( "com.sun.star.sheet.SpreadsheetDocument" )
End Function

Otevření dokumentu

Dim oDoc As Object
oDoc = StartDesktop.loadComponentFromURL( ConvertToURL( "/home/robert/abc.xls" ), "_blank", _0, Array() )

Aktuální list

Dim oSheet As Object
oSheet = oDoc.getCurrentController.getActiveSheet

Počet listů dokumentu

Dim nNoLists As Integer
nNoLists = oDoc.Sheets.Count
' nebo
nNoLists = oDoc.getSheets.getCount

Přístup k listu podle jména

Dim oSheet As Object
oSheet = oDoc.getSheets.getByName( "jméno listu" )

Přístup k listu podle čísla

Všechny listy jsou číslovány od 0. Následující příklad uloží do proměnné oSheet odkaz na druhý list.

Dim oSheet As Object
oSheet = oDoc.getSheets.getByIndex( 1 )

Nebo:

oSheet = oDoc.Sheets( 1 )

Iterace listy dokumentu

Dim oSheet As Object
Dim eSheets As Object
eSheets = oDoc.getSheets.createEnumeration
While eSheets.hasMoreElements
        oSheet = eSheets.nextElement()
        MsgBox "Jméno dalšího listu: " & oSheet.getName & "."
Wend

Nový list

Dim oSheet As Object
oSheet = oDoc.createInstance( "com.sun.star.sheet.Spreadsheet" )
oDoc.Sheets.insertByName( "jméno nového listu", oSheet )
(Jako ve škole) Průměr: 4,33 | Hodnotilo: 6
 

Komentáře

user avatar
Odpovědět
návrh
6. 06. 2005, 19:32:28
často se v podnicích používají objednávky . Zájímalo by mě zda neuvažujete též o nějakém formuláří , který by automaticky čísloval objednávky a vkládal dnešní datum tak ,že při otevření za měsíc se nepřepíše ( datum, a číslo obj.). Objednávky byly na jednom listě a byl možný obsah dle dodavatelsých firem . Díky . Mě se jedná hlavně jakým způsobem zvětšovat číslo objednávky automaticky, a datum po uzavírání dokumentu , či po tisku ( @now , přepsat jako text)nashledanou Liška
user avatar Anonymní
Odpovědět
fanda
29. 10. 2005, 21:34:53
Fandím , kluci inženíří a i ostatní jde Vám to . I když je mi kousek do šedesátky , je to perfekt!!!! A přeji hodně pracovního štěstí !!!! Díky ing. Pastreňákovi !!!!
user avatar Jaroslav Šimůnek
Odpovědět
Otevření html jako tabulky
19. 02. 2006, 23:38:33
Dobrý den,
mám několik stovek dokumentů v html formátu, které obsahují tabulku. Včechny dokumenty mají stejnou strukturu a já potřebuji z každého dokumentu přečíst obsah tabulky a ten přemístit do jediné souhrné tabulky a to opakovaně po každé aktualizaci původních html dokumentů. Chtěl jsem to udělat tak, že si v ooCalcu napíšu makro, které pomocí cyklu každý dokument otevře jako tabulku (pokud mám v oo otevřen nějakou tabulku a myší do ní přesunu jeden z html dokumentů, tak se mi aktuální tabulka zavře a otevře se mi html dokument jako tabulka - takže vím, že to lze)a potřebná data z příslušných buněk přesune. Problém je v tom, že při použití zde uvedené metody loadComponentFromURL se mi dokument otevře vždy ve writeru a nepřišel jsem na to, jak oo přesvětčit, aby html otevřel v Calcu. Prosím proto o pomoc, jak na to. V nápovědě k programu se mi nepovedlo nic najít a anglická nápověda na webu je pro mne strašně nepřehledná. Snad by mohl pomoct paramets FilterName, který se dá nastavit pomocí interního názvu typu otvíraného souboru. Bohužel se mi nikde nepovedlo najít seznam těchto interních názvů.
Předem děkuji za odpovědi.
Jaroslav Šimůnek
user avatar Michal Švábík
Odpovědět
Otevření HTML jako tabulky
14. 06. 2006, 12:46:15
Řeším to samé, bohužel i když jsem si našel že existuje FilterName "MS Excel 97" není to nic platné jelikož se dokument neotevře vůbec.
Zde je část kódu:

Set objServiceManager= CreateObject("com.sun.star.ServiceManager")


'Create the Desktop
Set objDesktop= objServiceManager.createInstance("com.sun.star.frame.Desktop")

Dim args(0)
Set args(0) = MakePropertyValue("FilterName","MS Excel 97")
Set objDocument= objDesktop.loadComponentFromURL("file:///" & Replace(FullPath, "\", "/"), "_blank", 0, args)

Jakmile je uveden filtr neotevře se nic, jakmile je to bez filtru otevře se to ve Writeru.
Nemá někdo nějaký nápad?
user avatar Michal Švábík
Odpovědět
Řešení:
14. 06. 2006, 14:09:48
Takhle to funguje:

[code]
Dim args(0)
Set args(0) = MakePropertyValue("FilterName","HTML (StarCalc)")
Set objDocument= objDesktop.loadComponentFromURL("file:///" & Replace(FullPath, "\", "/"), "_blank", 0, args)
[/code]

HTML se otevře v Calcu
user avatar ladinek
Odpovědět
Otevření dokumentu
28. 02. 2006, 08:28:14
je tam chybka, nepatří tam StartDesktop, ale StarDesktop.
user avatar Roman
Odpovědět
Calc - pracujeme s listy_objednávky
22. 01. 2010, 08:45:26
Dobrý den.
předem nejsem programátor - sháním "jutilitku" - šablonu objednávek - aby pak šlo z nich data jednoduše uložit do databáze a z té filtrovat (datum, název položky v objednávce, a...).
Možná to už existuje a používá se to cca tak, jak jsem nyní psal.

Děkuji
Roman Makrlík

Můj mail :
roman.makrlik@seznam.cz
user avatar Miroslav Gešvantner
Odpovědět
Re:Calc - pracujeme s listy_objednávky
24. 01. 2010, 20:03:04
No ja si dovolím odpovedať.
Možno by Vám pomohlo prečítať si o tom niečo v článkoch OpenOffice.org vo výrobnej firme. http://www.openoffice.cz/navody/openoffice-org-vo-vyrobnej-firme-7-objednavka-1
Tu je o objednávke písané a dáta z nej sa môžu pomocou makra ukladať do samostatného zošitu, kde sa dá s nimi následne pracovať (napríklad aj filtrovať)
Miro
user avatar IrenaS
Odpovědět
Calc - pracujeme s listy
22. 01. 2010, 11:08:05
Prosím, abyste své dotazy směřoval na fórum. Tady vám asi nikdo ze znalých lidí neodpoví, protože váš dotaz nedohledá.
Všichni "znalí" jsou na fórech, a tam se snaží lidem odpovídat
Děkuji

Přidat názor

 

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.

 
Robert Vojta

Robert Vojta

 
 
 
woo jaw demo hz