THis examples were created to show the use of tcluno for in an article for the german computer magazin LinuxMagazin. All comments are therefor in german, but I hope the example is usefull for non german speakers as well.
Author Carsten Zerbst
--- #!/bin/sh # # Beispiel für TclUno # \ exec tclsh "$0" "$@"
lappend auto_path file join [ pwd tclurtp ] lappend auto_path file join [ pwd tcluno ]
# damit wird die Skriptlösung angefordert set ::argv "-urtp"
# Erweiterung laden package require tcluno_scalc
# Kontakt mit OpenOffice herstellen if {catch {::tcluno_soffice::initDesktop } desktop} {
puts stderr "Verbindung mit OpenOffice fehlgeschlagen !" puts stderr "Fehler war:" puts stderr $desktop puts stderr "" puts stderr "Bitte OpenOffice mit Netzwerkunterstützung starten:" puts stderr "ooffice \"-accept=socket,host=localhost,port=2002;urp;\"" exit 1
}
# Schnittstellen anzeigen puts "desktop hat folgende Schnittstellen:" puts join [$desktop getTypes "\n" ]
puts "\ndesktop ist folgender Service:" puts $desktop getSupportedServiceNames
# leere Liste erstellen set filterSequence $desktop tcluno::createUnoSequence Any
# neues Dokument in Tabellenkalkulation set spreadsheet [$desktop loadComponentFromURL "private:factory/scalc" \
"_blank" 0 $filterSequence ]
# erste Seite finden set sheets $spreadsheet getSheets set sheet $sheets getByIndex 0
puts "\nTabellenname ist: $sheet getName" $sheet setName "Zufallszahlen"
# Tabelle mit Zufallszahlen füllen for { set col 0} { $col < 10} {incr col} {
for { set row 0} { $row < 10} {incr row} { set cell [$sheet getCellByPosition $col $row] set value [expr rand() * 100] $cell setValue $value }
}
# Zellenadresse set cell $sheet getCellRangeByName "A12" puts "\nKomplette Adresse: $cell getCellAddress"
# Formeln und Texte set cell $sheet getCellRangeByName "A12" $cell setFormula "Summe:"
set cell $sheet getCellRangeByName "B12" $cell setFormula "=sum(B1:B10)"
set cell $sheet getCellRangeByName "A13" $cell setFormula "Mittelwert:"
set cell $sheet getCellRangeByName "B13" $cell setFormula "=median(B1:B10)"
# Als Excell speichern set filterSequence $::desktop tcluno::createUnoSequence Any set msExcelFilter [$::desktop tcluno::createUnoStructHelper \
com.sun.star.beans.PropertyValue \ {FilterName -1 {MS Excel 97} 0} ]
$::desktop tcluno::appendUnoSequence $filterSequence $msExcelFilter
$spreadsheet storeAsURL file:/tmp/test.xls $filterSequence
---