Inhalt
Index
Support Über uns
Home

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
Entwickler Portal Impressum AGB Kontakt


© 1980-2017 Acc Computertechnik GmbH All rights reserved.