2. 4. 2. 1   Excel

appCmd Workbooks
Erzeugt eine Referenz auf Exceldateien (Mappen). Der Rückgabewert des Befehls ist das Objektkommando workbookCmd, das nachfolgend benötigt wird.
 
workbookCmd Open fileName

Öffnet eine existierende Excel-Datei (Mappe). Der Rückgabewert des Befehls ist das Objektkommando bookCmd, das nachfolgend benötigt wird. Existiert die Datei nicht, erscheint eine Fehlermeldung

workbookCmd Add
Erzeugt eine neue Excel-Datei (Mappe). Die Mappe ist zunächst leer und enthält 3 Tabellenblätter. Der Rückgabewert des Befehls ist das Objektkommando bookCmd, das nachfolgend benötigt wird.

bookCmd Save fileName

Speichert die Mappe unter dem angegebenen Dateinamen fileName. Der String fileName muss mit vollständigem Pfad und Dateierweiterung angegeben werden.
 
bookCmd Worksheets
Erzeugt eine Referenz auf die Tabellenblätter. Der Rückgabewert des Befehls ist das Objektkommando worksheetCmd, das nachfolgend benötigt wird.
 
worksheetCmd Item integer
Erzeugt eine Referenz auf das Tabellenblatt Nummer integer. Der Rückgabewert des Befehls ist das Objektkommando sheetCmd, das nachfolgend benötigt wird.
 
sheetCmd Cells
Erzeugt eine Referenz auf alle Zellen des Tabellenblattes. Der Rückgabewert des Befehls ist das Objektkommando cellCmd, das nachfolgend benötigt wird.
 
sheetCmd Range linksoben rechtsunten
Erzeugt eine Referenz auf alle Zellen des Tabellenblattes, die innerhalb des angegebenen Bereichs liegen. Der Rückgabewert des Befehls ist das Objektkommando rangeCmd, das nachfolgend benötigt wird. Die Angabe von linksoben bzw rechtsunten erfolgt in Excel-Notation (Bsp: A3, C11, usw.)
 
cellCmd Font / rangeCmd Font
Erzeugt eine Referenz auf die Schrift für alle Zellen (cellCmd) oder den entsprechenden Bereich (rangeCmd). Der Rückgabewert des Befehls ist das Objektkommando fontCmd, das nachfolgend benötigt wird.
 
fontCmd option ?arg?
Abfrage oder Setzen von Formatierungseinstellung der Schrift für alle durch fontCmd referenzierten Zellen. Optionen:
Bold
Fett (Boolean)
Italic
Kursiv (Boolean)
Underline
Unterstrichen (Boolean)
ColorIndex
Schriftfarbe (Integer) - Hier gibt es eine Übersicht für zulässige Farbindizes.
Size
Schriftgröße (Integer)
weitere

cellCmd Interior / rangeCmd Interior

Erzeugt eine Referenz auf den Zellenhintergrund für alle Zellen (cellCmd) oder den entsprechenden Bereich (rangeCmd). Der Rückgabewert des Befehls ist das Objektkommando interiorCmd, das nachfolgend benötigt wird.

interiorCmd ColorIndex ?integer?

Abfrage oder Setzen der Hintergrundfarbe für alle durch interiorCmd referenzierten Zellen. Hier gibt es eine Übersicht für zulässige Farbindizes.

cellCmd Borders

Erzeugt eine Referenz auf den Zellenrahmen für alle Zellen (cellCmd) oder den entsprechenden Bereich (rangeCmd). Der Rückgabewert des Befehls ist das Objektkommando borderCmd, das nachfolgend benötigt wird.

borderCmd LineStyle ?integer?

Abfrage oder Setzen des Rahmens für alle durch borderCmd referenzierten Zellen. Indizes:
0 -
Kein Rahmen
1 -
durchgezogende Linie
2 -
Striche
3 -
Punkte
4 -
Strichpunkte
weitere

cellCmd Item row column ?string?

Setzen des Zelleninhalts der Zelle in der Zeile row und Spalte column. Ohne Angabe von string wird eine Referenz auf die Zelle gesetzt. Der Rückgabewert des Befehls ist das Objektkommando itemCmd, das für die Abfrage des Zelleninhalts benötigt wird. Mit Angabe von string wird der Inhalt der Zelle mit string besetzt. Die Parameter row und column sind in Excel-Notation anzugeben (row - Integer; column - Buchstaben).

itemCmd Text

Abfrage des Zelleninhalts der durch itemCmd referenzierten Zelle.

BEISPIELE 

1. Erstellen einer Excel-Datei

package require tcom
set application [tcom::ref createobject Excel.Application]
set workbooks [$application Workbooks]
set workbook [$workbooks Add]
set worksheets [$workbook Worksheets]
set worksheet [$worksheets Item [expr 1]] ;#erstes Tabellenblatt
$worksheet Name "Test" ;#Name für das erste Tabellenblatt
set cells [$worksheet Cells]
set borders [$cells Borders]
$borders LineStyle [expr 2] ;#Alle Zellen umrahmt (mit Strichen)
set font [$cells Font]
$font ColorIndex [expr 5]
;#Die Schriftfarbe für alle Zellen ist blau
$font Bold [expr 1]
;#Die Schrift für alle Zellen ist Fett
set range [$worksheet Range A1 B3]
set interior [$range Interior]
$interior ColorIndex [expr 10] ;#Hintergrundfarbe für A1 bis B3 ist grün
set i 1
foreach row {1 2 3} {
  foreach column {A B C} {
    $cells Item $row $column "Test $i" ;#Inhalt in die Zellen schreiben
    incr i
  }
}
$workbook SaveAs "C:/test.xls"
;#Speichern
set fontinfo [::tcom::info interface $font]
foreach element [$fontinfo properties] {
  puts $element ;#Ausgaben der Eigenschaften für Schift
}
$application Quit ;#Schließen

Durch diesen Tcl-Quellcode wird die folgende Excel-Datei erstellt:


2. Auslesen aus einer Excel-Datei

package require tcom
set workbook [tcom::ref getobject "C:/test.xls"]
set worksheets [$workbook Worksheets]
set worksheet [$worksheets Item [expr 1]] ;#erstes Tabellenblatt
set cells [$worksheet Cells]
set result ""
foreach row {1 2 3} {
  set newline ""
  foreach column {A B C} {
    set cell [$cells Item $row $column]
    lappend newline [$cell Text] ;#Inhalt aus den Zellen lesen
  }
  lappend result $newline
}
puts $result ;#-> Ausgabe des Inhalts

Durch diesen Tcl-Quellcode wird die Variable result mit dem Inhalt der oben erstellten Excel-Tabelle belegt:
{{Test 1} {Test 2} {Test 3}} {{Test 4} {Test 5} {Test 6}} {{Test 7} {Test 8} {Test 9}}
Ebenso können durch die oben gelisteten Befehle Farben, Schriftstile, etc. ausgelesen werden.

3. Noch ein Beispiel

package require tcom
set application [tcom::ref createobject Excel.Application]
set workbooks [$application Workbooks]
set workbook [$workbooks Add]
set worksheets [$workbook Worksheets]
set worksheet [$worksheets Item [expr 1]]
$worksheet Name "Farben"
set cells [$worksheet Cells]
$cells HorizontalAlignment [expr 2]
$cells ColumnWidth [expr 5]
set excelspalten "dummy A B C D E F G H"
set colorindex 0
for {set i 1} {$i <= 7} {incr i 2} {
    for {set j 1} {$j <= 14} {incr j} {
        incr colorindex
        set linksoben [lindex $excelspalten $i]$j
        set rechtsunten [lindex $excelspalten $i]$j
        set range [$worksheet Range $linksoben $rechtsunten]
        set interior [$range Interior]
        $interior ColorIndex $colorindex
        set row $j
        set column [expr $i + 1]
        $cells Item $row $column $colorindex
    }
}
$workbook SaveAs "C:/Farben.xls"
$application Quit

Die folgende Excel-Datei wird erstellt: