Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 18. 4. 2012 11:00:40

mhafan
Člen
Registrace: 18. 4. 2012
Příspěvků: 1

Automaticke generovani tiskovych sestav

Dobry den,

potrebuju ve sve aplikaci tisknout s pouzitim OO. Mel bych vytvorenou sablonu v Calcu a na nektera policka bych z programu potreboval dosadit hodnoty a nasledne vytisknout.

Predstavil bych si to priblizne takto:

./soffice -p sablona data

kde
- sablona - je moje vytvorena sablona
- data - je soubor (napr. XML) kde bude seznam dvojic (index bunky, hodnota)

OOFFice by toto vykonal bez otevreni nejakeho GUI a podobne. Tisk by sel rovnou na tiskarnu.

Poradte mi, prosim, jak toto spravne zadat. Predpokladam, ze technicky je to mozne.

Diky

mhafan

Offline

#2 19. 4. 2012 08:38:11

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Automaticke generovani tiskovych sestav

Nevím přesně co potřebujete. Ale nejspíš Vám pomůže makro pro spuštění tisku. To ostatní je jiný problém, například volby buňky (ochrana buňky - skrýt při tisku). Podobná témata už tady běžela - jak tisknout vybranou plochu, tisk skrytých buněk a další.
  Nevím proč se má spouštět tisk automaticky - ale nějaký impulz pro spuštění makra potřebujete. Například tlačítkem, z jiného makra, nebo stiskem klávesy. Pokud tedy bude například inicializována aktualizace formuláře, a dopadne dobře (například výsledek buňky s funkcí ISERROR), tak se za vyhodnocení vloží například Call "Nazev MakraPro Tisk". To může vypadat třeba takhle :
Sub Tiskni
oDoc = ThisComponent
Dim mPrinter(0) As New com.sun.star.beans.PropertyValue
mPrinter(0).Name="Name"
mPrinter(0).value="<Epson>"'Název Vaší tiskárny - musíte doplnit
oDoc.Printer = mPrinter()
Dim oRangeAddress as New com.sun.star.table.CellRangeAddress
oRangeAddress.Sheet = 1 ' List XY
oRangeAddress.StartColumn = 0 'Sloupec "0" = "A" - přepíšete podle potřeby
oRangeAddress.StartRow = 0 'Řádek "0" = 1. řádek - přepíšete podle potřeby
oRangeAddress.EndColumn = 2 'Sloupec "0" = "C" - přepíšete podle potřeby
oRangeAddress.EndRow = 6 'Řádek "6" = 7. řádek - přepíšete podle potřeby
oDoc.Sheets(1).setPrintAreas(oRangeAddress())
Dim mPrintOpts(0) As New com.sun.star.beans.PropertyValue
oDoc.Print(mPrintOpts())


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 26. 4. 2012 20:49:18

luka7
Člen
Registrace: 20. 5. 2009
Příspěvků: 84

Re: Automaticke generovani tiskovych sestav

Nevím, jak přesně vypadá ta šablona, ale říkám si, že vložit do listu 2 sloupec hodnot a v listě číslo 1 mít hodnoty přiřazeny by bylo nejjednodušší. Ale záleží na tom výstupu...

Offline

#4 27. 4. 2012 04:58:17

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Automaticke generovani tiskovych sestav

Pro luka7:
Já dotazu rozumím jinak. Není podstatné jak vypadá ta šablona. mhafan potřebuje automaticky vytisknout něco "tedy tu svou šablonu" aniž by musel otevírat GUI, tedy spíš chce tisknout z neotevřeného dokumentu.
  Postup lze udělat právě pomocí maker "Open" + asi "načíst" + "Tisk" + "Close". Já jsem poslal jen makro pro tisk.
  Komplexní řešení sice není složité, ale musí si to sám nastavit. Musí vědět, kam dát které makro aby se mu otevřel požadovaný zavřený dokument, musí vyplnit ručně údaje typu "Url" ap. - načetl nová data (pokud je potřeba) - vytiskl - uložil - zavřel. Nnapříklad po stisknutí tlačítka mu zůstane jen fyzicky vytištěný list papíru a o nic jiného se nestará. Tedy sen každé sekretářské blondýny smile


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

Zápatí