Version 2 of Drive OpenOffice Calc with tcluno

Updated 2006-02-11 20:52:04

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

---