Seite 1 von 1

Excel druckt falsch

Verfasst: Mi, 17. Nov 2021 7:19
von ramses
Hallo
wir haben eine mehrseitige Excel-Tabelle die den Tabellen-Kopf als "Wiederholungszeilen oben" auf jede Seite drucken soll.

Wird Excel mit der Tabelle geöffnet und die Tabelle gedruckt ist die Ausgabe immer korrekt.

Beim Ausdruck über Xbase++ mit dem Com-Objekt ist die Seiteneinteilung korrekt der Blattkopf wird auf den Folgeseiten aber nicht gedruckt, die Zeilen beginnen ganz oben auf der Seite und unten auf den Folgeseiten bleibt der benötigte Platz des Tabellenkopfs leer.

Für den Ausdruck wird folgender Code verwendet:

Code: Alles auswählen


function PrintExcelxls( cSourceFile, aSheet )
    local oExcel, oWorkbook, bAlterFehlerblock := ErrorBlock()
    local a, ret_val := .f., oSheet

    default aSheet to {1}

    oExcel := CreateObject( "Excel.Application" )
    IF Empty( oExcel )
       msgbox("MS-Excel ist nicht oder nicht korrekt installiert!" + chr(13) + "Fehlernr.: " + ltrim(str(ComLastError())) )
       return(ret_val)
    ENDIF

    ErrorBlock({|oError|Excelfehler(oError)})

    begin sequence

    oExcel:Application:DisplayAlerts := .F.
    oExcel:Application:Workbooks:new()
    oExcel:visible := .f.               // excel versteckt laden
    oWorkbook := oExcel:application:workbooks:open(cSourceFile)
    for a = 1 to len(aSheet)
       oSheet := oWorkbook:Worksheets(aSheet[a])   // Referenz auf das zu druckende Worksheet
       oSheet:select()
       oSheet:PrintOut()
    next
    sleep(50)
    oExcel:Application:Quit()
    oExcel:destroy()

    end sequence

    ErrorBlock(bAlterFehlerblock)


return(ret_val)

Der hat eigentlich immer funktioniert, dies ist jedoch die erste Tabelle mit "Wiederholungszeilen oben" die wir nicht selbst erstellt haben sondern vorgängig nur mit Werten bestücken und drucken müssen.
Hat jemand eine Idee was hier beim Ausdruck schief läuft?

Re: Excel druckt falsch

Verfasst: Mi, 17. Nov 2021 11:30
von Marcus Herz
Ich hab jetzt nicht nachgesehen, kann es sein, dass bei Druck in Execl du ja alle Seiten auswählst, das aber in einem Druckjob machst. In deinem Code wird ja je Seite der Druck ausgeführt.
Gibt es eine Print() Methode auch auf dem Workbook?

Re: Excel druckt falsch

Verfasst: Mi, 17. Nov 2021 11:36
von Marcus Herz

Code: Alles auswählen

Workbook.PrintOut

Re: Excel druckt falsch

Verfasst: Mi, 17. Nov 2021 12:33
von ramses
Hallo Markus

das Excel File enthält mehrere Tabellen jede mit mehreren Seiten.
Mit

Code: Alles auswählen

oSheet := oWorkbook:Worksheets(aSheet[a])  
wird eine Tabelle angewählt die dann mit dem Printout mit allen Seiten Gedruckt wird.

Printout auf dem Workbook funktionert gar nicht.