9.3 Exceldatei schreiben
Dieses Beispiel erzeugt eine Exceldatei und speichert sie am in der aktuellen Directory als acctest.xls.
Das Beispiel zeigt eine Reihe von Möglichkeiten zur Verwendung des Objektmodells von Excel auf.
Beispiel: texcel2.cob
*c32 %;slink §
id division.
data division.
working-storage section.
01 res pic 9(10).
01 hex pic x(10).
01 range usage pointer value 0.
01 mrows pic 9(5).
01 mcols pic 9(5).
01 sum pic 9(5).
01 val pic x(10).
01 row pic 99.
01 col pic 99.
01 xls pic x(200).
procedure division.
*
* Schnittstelle zum Excel-Object Model
*
* Eröffnen:
* call openexcel using res [exceldatei] [visible]
*
*
call openexcel using res.
if res not = 0
display 'Cannot start excel - Status ' res
stop run.
*
* Hier wurde Excel mit einer neuen Datei geöffnet (unbenannt...)
*
move 5 to mrows.
move 5 to mcols.
* Font setzen für die Felder setzen
*
* setfontexel using res fontname [size] [fett] [kursiv] [underline]
* wenn Argument [] nicht benötigt(bzw. unverändert) dann -1
* z.B. call setfontexcel 'Verdana' -1 1.
* setzt Verdana, Größe unverändert, aber fett.
call setfontexcel using res 'Verdana' 14.
*
* Einfügen der Werte in die Zellen
*
perform varying row from 1 by 1 until row > mrows
* Verändern der Schriftart:
* call setboldexcel using res [fett] [kursiv] [underline] [size]
*
if row = 2 call setboldexcel using res 1
else call setboldexcel using res 0
end-if
perform varying col from 1 by 1 until col > mcols
if col not = 2
call setexcelcell using res col row 'Test'
else
call setexcelcell using res col row -123,2
end-if
end-perform
end-perform
*
* Zum Einlesen von Excelwerten den Call getexcelcell verwenden.
*
* call getexcelcell using res col row feld.
*
*
* Nachträgliche Änderung der Attribute ist möglich, z.B.
* Farbe ändern
*
call excelset using res
'ActiveSheet.Range("C1:C3").Font.Color'
function rgb (255 0 0).
*
* Im Object-Model unter Excel kann, wie bei VBA, die Adressierung
* des Attributs vorgenommen werden.
* Mit dem RangeObjekt können einzelne oder mehrere Zellen angesprochen
* werden.
* Hier werden alle Zellen von C1 bis C3 mit rot versehen
*
* Acc-Cobol ermöglicht auch die übliche Verwendung von Parametern
* wobei nach dem ^ die Argument-Nr. folgt, also ^1 1. Argument
* ^2 2. Argument usw.
call excelset using res
'ActiveSheet.^1(^2).Font.Color' 'Range'
'B2:B3' 255000000.
* Obige Befehlszeile entspricht also
* call excelset 'ActiveSheet.Range("B2:B3")' 255000000
*
* Wird ein Objekt mehrfach verwendet, kann es auch in das Programm
* eingelesen werden. Das Objekt muß dann mit usage pointer
* deklariert worden sein:
call excelget using res 'ActiveSheet.Range("A2:A3")' range.
*
* Nun kann von diesem Objekt ausgehend adressiert werden, z.B:
* Farbe für das Objekt (Range("A2:A3") ändern
*
call objectset using res range 'Font.Color' 000255000.
*
* Wird der Pointer nicht mehr benötigt, kann er wieder freigegeben
* werden. Beim Beenden vor Excel werden alle verwendeten Pointer
* automatisch von Acc-Cobol freigegeben.
call objectfree using res range.
*
call excelset using res
'ActiveSheet.Range("A1:A10").ColumnWidth' 20.
call excelset using res
'ActiveSheet.Range("B2").RowHeight' 30.
*
* Die Excel-Datei in der aktuellen Directory sichern:
*
call saveexcel using res 'acctest.xls'.
if res not = 0 display ' Fehler ' res.
*
* Excel kann sichtbar gemacht werden, sollte aber erst
* nach der kompletten Automation geschehen
*
call excelset using res 'visible' 1.
*
* Warten auf das Programmende
*
display 'Um Excel automatisch zu beenden, RETURN eingeben display 'Um Excel automatisch zu beenden, RETURN eingeben!'
call getchar
*
* Excel beenden. Soll Excel für den Anwender weiterlaufen
* dann den call closeexcel verwenden.
*
call quitexcel.
stop run.
err section.
if res = 0 exit section.
call sprintf using hex '0x%x' res.
call texec using 'showerror' hex.
Siehe auch: Excel-ObjektmodellExceldatei lesen Excel Rahmen,Farben,Formattierung
Zurück zu Acc-Cobol: Zugriff auf Excel - Exceldatei anzeigen
Hoch zu Acc-Cobol: Zugriff auf Excel
Weiter zu Farben, Rahmen und Formatierung
|