COM-Objekte aus PHP heraus ansprechen: Anderer Drucker in Excel
Yeti
- programmiertechnik
Hallo Forum!
Ich weiß ja nicht, ob ihr schon mal mit COM-Objekten unter PHP gearbeitet habt. Ich soll es jetzt tun, um eine Excel-Vorlage (weil einfach änderbar) mit Daten zu füllen uns auszudrucken. Das klappt auch hervorragend, allerdings würde ich gerne auf einem beliebigen Drucker ausdrucken.
Bisher klappt der Ausdruck nur auf dem Standarddrucker.
Mein bisheriger Code ist:
$excel= new COM("excel.application") or die("Unable to create Excel sheet");
$excel->Workbooks->Add('c:/pfad/vorlage.xlt');
$excel->Range('B11')->Formula = 'Testfirma GmbH & Co. KG';
$excel->Range('B12')->Formula = 'Herrn Martin Mustermann';
$excel->Range('B13')->Formula = '01234 / 56789';
$excel->Range('B14')->Formula = date("d.m.Y");
$excel->Range('B37')->Formula = '123,4567 €';
//...
$excel->Workbooks[1]->PrintOut(1, 1, 1, 0, '\SERVER\DRUCKER', 0);
$excel->Workbooks[1]->Close(0);
$excel->quit();
Ich habe auch schon versucht, $excel->Application->ActivePrinter zu setzen, wie ich es in diversen VBA Tutorials gelernt habe. Laut Excel-Objektkatalog readwrite ... Allerdings kommt dann in PHP immer folgende Fehlermeldung: "Fatal error: Uncaught exception 'com_exception' with message 'Source: Microsoft Excel
Description: Die ActivePrinter-Eigenschaft des Application-Objektes kann nicht festgelegt werden.' in ***:7 Stack trace: #0 {main} thrown in *** on line 7"
Wäre froh, wenn mir jemand einen Tipp geben könnte.
Der Yeti
Hi,
mittlerweile habe ich das Problem wohl ein wenig weiter eingrenzen können. Die o.g. Fehlermeldung scheint daher zu rühren, dass der Drucker falsch angesprochen wurde. '\DRUCKSERVER\DRUCKER auf Ne01:' anstatt '\DRUCKSERVER\DRUCKER' klappt, wobei die Zahl bei jedem Netzwerkdrucker verschieden ist.
Anscheinend kann man aber nur Drucker ansprechen, die vorher in Windows als Drucker verbunden/installiert sind. Das ist aber dumm, da ich eben firmenweit alle Drucker vom Server aus ansprechen will, ohne diese erst installieren zu müssen.
Daher die Anschlussfrage: Kann man einen Drucker auch über den Share ansprechen? Kann man u.U. in PHP alle verfügbaren Drucker auflisten lassen?
Bin dankbar für jede Hilfe...
Der Yeti