+ Antworten
Seite 1 von 6 1 2 3 ... LetzteLetzte
Ergebnis 1 bis 10 von 55
  1. #1
    Registriert seit
    Sep 2009
    Ort
    Bocholt
    Beiträge
    1,131

    Standard Excel schreiben/lesen

    Hallo alle zusammen,

    ich habe hier in den letzten Wochen viel gelesen, gestöbert, gelernt und erfragt. An dieser Stelle nochmals besten Dank für eure Hilfe.

    Ich habe meine Visu fast fertig und werde sie euch in den nächsten Wochen vorstellen. Ich denke das ist das mindeste was man als "Rookie" in Sachen IPS machen kann um wenigstens ein bisschen zurück zu geben.

    Ich habe hier öfters gelesen das Interesse besteht eine Anbindung zu Excel zu haben um Daten zu schreiben oder zu lesen. Ich habe zwei Funktionen geschrieben die genau das machen. Die beiden Scripe sind nur Beispiel wie man eine Verbindung zu Excel erstellt. Sie beinhalten lediglich das lesen / schreiben einer Zelle. Das Script kann natürlich dementsprechend "ausgerollt" werden.

    aktualisiert am 09.11.2009 Schablone


    Als erstes die Funktion "write_to_excel"

    PHP-Code:
    function write_to_Excel($filename$Worksheet$raw$column$string)
                {
                   
    //Einbinden der COM-Klasse für Excel
                
    $excel_app = new COM("Excel.application") or Die ("Did not connect");

                    
    //Kontrolle der Datei
                    
    if (file_exists($filename))
                    {
                        
    //öffnen einer bestehenden Excel-Datei
                    
    $Workbook $excel_app->Workbooks->Open("$filename") or Die("Did not open $filename $Workbook");
                    }
                    else
                    {
                        
    //Sonst -> Meldung
                        
    echo "The file $filename does not exist";
                        
    //und neu anlegen
                        
    $Workbook $excel_app->Workbooks->Add(); //neu
                    
    }

                    
    //zusammensetzen der Zelle
                    
    $cell $column.$raw;

                    
    //Auswahl des Worksheet
                    
    $Worksheet $Workbook->Worksheets($Worksheet);
                    
    //Aktivieren des Worksheet
                    
    $Worksheet->activate;
                    
    //Auswahl der Zelle
                    
    $excel_cell $Worksheet->Range($cell);
                    
    //Aktivieren der Zelle
                    
    $excel_cell->activate;
                    
    //Schreiben der Stringinformation in die aktive Zelle
                
    $excel_cell->value $string;

                    
    //Kontrolle der Datei
                    
    if (file_exists($filename))
                    {
                        
    //Speichern der bestehenden Datei
                        
    $Workbook->Save;
                    }
                    else
                    {
                       
    //Speichern der neuen Datei
                        
    $Workbook->SaveAs($filename);
                    }

                    
    //Schliessen der Excel-Instanz und freigeben des Speichers
                    //Willi wichtig!!!
                    
    $Workbook->Close;
                    unset(
    $Worksheet);
                    unset(
    $Workbook);
                    
    $excel_app->Workbooks->Close();
                    
    $excel_app->Quit();
                    unset(
    $excel_app);
                } 
    Nun die Funktion "read_from_excel"

    aktualisiert am 09.11.2009 Schablone

    PHP-Code:
    function read_from_Excel($filename$Worksheet$raw$column)
                {
                    
    //Kontrolle der Datei
                    
    if (file_exists($filename))
                    {
                       
    //Einbinden der COM-Klasse für Excel
                    
    $excel_app = new COM("Excel.application") or Die ("Did not connect");
                        
    //öffnen einer bestehenden Excel-Datei
                    
    $Workbook $excel_app->Workbooks->Open("$filename") or Die("Did not open $filename $Workbook");
                        
    //Auswahl des Worksheets 1
                        
    $Worksheet $Workbook->Worksheets($Worksheet);
                        
    //Aktivieren des Worksheet 1
                        
    $Worksheet->activate;
                        
                        
    //zusammensetzen der Zelle
                        
    $cell $column.$raw;
                        
                        
    //Auswahl der Zelle
                        
    $excel_cell $Worksheet->Range($cell);
                        
    //Aktivieren der Zelle
                        
    $excel_cell->activate;
                        
    //Lesen der Stringinformation aus der aktive Zelle
                    
    $string $excel_cell->value;
                        
    //Schliessen der Excel-Instanz und freigeben des Speichers
                        //Willi wichtig!!!
                        
    $Workbook->Close;
                        unset(
    $Worksheet);
                        unset(
    $Workbook);
                        
    $excel_app->Workbooks->Close();
                        
    $excel_app->Quit();
                        unset(
    $excel_app);

                    }
                    else
                    {
                        
    //Sonst -> Meldung
                        
    $string "The file $filename does not exist";
                    }
                    
                    
    //Ausgeben der Information
                    
    return $string;
                } 
    Beispiel schreiben (Einbindung der Funktionen)

    aktualisiert am 09.11.2009 Schablone

    PHP-Code:

    $filename 
    IPS_GetKernelDir()."meldungen\\ereignisse\\Test.xls";
    $Worksheet "Tabelle1";            //Option 1 über die Bezeichnung
    $Worksheet 1;                     //Option 2 über die Nummer
    $raw 10;
    $column "B";
    $string "Das ist ein Test";

    write_to_Excel($filename$Worksheet$raw$column$string); 
    Beispiel lesen (Einbindung der Funktionen)

    aktualisiert am 09.11.2009 Schablone

    PHP-Code:

    $filename 
    IPS_GetKernelDir()."meldungen\\ereignisse\\Test.xls";
    $Worksheet "Tabelle1";            //Option 1 über die Bezeichnung
    $Worksheet 1;                     //Option 2 über die Nummer
    $raw 10;
    $column "B";

    $string read_from_Excel($filename$Worksheet$raw$column);

    echo 
    $string
    Noch eins zum Schluss

    Ich bin PHP-Anfänger -> Also lass gnade walten.

    Ansonsten bin ich verheiratet. Das heisst -> 100% Kritikfähig


    Bis dann

    Martin

    aktualisiert am 09.11.2009 Schablone

    PS: aktualisierte Funktion print_from_Excel

    PHP-Code:

    function print_from_Excel($filename$Worksheet)
                {
                   
    //Einbinden der COM-Klasse für Excel
                
    $excel_app = new COM("Excel.application") or Die ("Did not connect");
                    
    //öffnen einer bestehenden Excel-Datei
                
    $Workbook $excel_app->Workbooks->Open("$filename") or Die("Did not open $filename $Workbook");
                    
    //Auswahl des Worksheets 1
                    
    $Worksheet $Workbook->Worksheets($Worksheet);
                    
    //Aktivieren des Worksheet 1
                    
    $Worksheet->activate;

                    
    //Worksheet drucken
                
    $Worksheet->PrintOut;

                    
    //für Leute die kein Geld
                    //für einen Print-Server haben (so wie ich)
                
    IPS_Sleep(10);

                    
    //Schliessen der Excel-Instanz und freigeben des Speichers
                    //Willi wichtig!!!
                    
    $Workbook->Close;
                    unset(
    $Worksheet);
                    unset(
    $Workbook);
                    
    $excel_app->Workbooks->Close();
                    
    $excel_app->Quit();
                    unset(
    $excel_app);

                } 
    Beispiel drucken (Einbindung der Funktionen)

    aktualisiert am 09.11.2009 Schablone

    PHP-Code:

    $filename 
    IPS_GetKernelDir()."meldungen\\ereignisse\\Test.xls";
    $Worksheet "Tabelle1";            //Option 1 über die Bezeichnung
    $Worksheet 1;                     //Option 2 über die Nummer

    print_from_Excel($filename$Worksheet); 
    Geändert von Schablone (09.11.09 um 20:07 Uhr)

  2. #2
    Registriert seit
    Mar 2006
    Beiträge
    3,422

    Das ist eine schöne Sache... Vielen Dank!... werde ich mal ausprobieren übers WE (wenn ich dazu komme).

    Ich habe da schon meine Ideeen in Zusammenarbeit mit Retiarius's "Parameter-Heizungssteuerung"
    Vielen Dank auch dorthin!
    Gruß nancilla

  3. #3
    Registriert seit
    Sep 2009
    Ort
    Bocholt
    Beiträge
    1,131

    Standard Ungefähr So!?

    Genau ungefähr so.


    Bis dann

    Martin
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Temperatur.jpg 
Hits:	1331 
Größe:	179.5 KB 
ID:	6422  
    Angehängte Dateien Angehängte Dateien

  4. #4
    Registriert seit
    Mar 2006
    Beiträge
    3,422

    Nja, schon bisschen mehr PNP, weniger als Formblatt, aber ich denke mit Makros...
    Mal schau'n was sich draus machen lässt... (Excel ist meine heimliche Leidenschaft und unendlich..)
    Ich werde es hier wissen lassen, wenn was öffentlich Verwendbares dabei raus kommt...
    Gruß nancilla

  5. #5
    Registriert seit
    Sep 2009
    Ort
    Bocholt
    Beiträge
    1,131

    Standard Aus Excel heraus drucken

    Wenn man dann mal was drucken will!


    PHP-Code:
    function print_from_Excel($filename)
                {
                   
    //Einbinden der COM-Klasse für Excel
                
    $excel_app = new COM("Excel.application") or Die ("Did not connect");
                    
    //öffnen einer bestehenden Excel-Datei
                
    $Workbook $excel_app->Workbooks->Open("$filename") or Die("Did not open $filename $Workbook");
                    
    //Auswahl des Worksheets 1
                    
    $Worksheet $Workbook->Worksheets(1);
                    
    //Aktivieren des Worksheet 1
                    
    $Worksheet->activate;

                    
    //Worksheet drucken
                
    $Worksheet->PrintOut;
                
                    
    //für Leute die kein Geld
                    //für einen Print-Server haben (so wie ich)
                
    IPS_Sleep(10);

                    
    //Schliessen der Excel-Instanz und freigeben des Speichers
                    //Willi wichtig!!!
                    
    $Workbook->Close;
                    unset(
    $Worksheet);
                    unset(
    $Workbook);
                    
    $excel_app->Workbooks->Close();
                    
    $excel_app->Quit();
                    unset(
    $excel_app);

                } 

  6. #6
    Registriert seit
    Mar 2006
    Beiträge
    3,422

    Hi Martin,

    mal noch eine Frage dazu:
    Du schreibst...
    Zitat Zitat von Schablone Beitrag anzeigen
    Die beiden Scripe sind nur Beispiel wie man eine Verbindung zu Excel erstellt.
    Muss demzufolge Excel auf dem Rechner installiert sein?
    Da wäre dann weniger praktisch für meine Idee , weil ich auf dem Server keine Office-Programme installieren möchte. Das gehört eben einfach nicht auf'n Server.
    Wenn ja, würde ein Excel-Viewer ausreichen? Hast du das schon probiert?
    Eine direkte Excel-File-Abfrage wäre natürlich schon schöner. Ansonsten müsste ich in CSV exportieren.
    Gruß nancilla

  7. #7
    Registriert seit
    Sep 2009
    Ort
    Bocholt
    Beiträge
    1,131

    Standard COM-Klasse / Interface

    Hallo nancilla,

    Zitat Zitat von nancilla Beitrag anzeigen
    Muss demzufolge Excel auf dem Rechner installiert sein?
    Da wäre dann weniger praktisch für meine Idee , weil ich auf dem Server keine Office-Programme installieren möchte. Das gehört eben einfach nicht auf'n Server.
    Das lesen/schreiben und drucken passiert aus Excel heraus. Mit dem COM-Interface bist Du in der Lage Windows-Anwendungen zu steuern.Die ganze Wahrheit ist, mit der Anweisung:

    PHP-Code:
    $excel_app = new COM("Excel.application") or Die ("Did not connect"); 
    wird Excel im Hintergrund gestartet.

    Also um es kurz zu machen "Ja" Du brauchst Excel.

    Das schöne an dem COM-Interface ist halt, das die meisten (angeblich sogar selbst geschriebenen) Programme darüber gesteuert werden können.

    D.h.: Excel, Word, PowerPoint, Email-Programme usw.

    Hier ein Beispiel für Word:

    PHP-Code:
    $filename IPS_GetKernelDir()."meldungen\\ereignisse\\ereignisse.doc";

    // Word starten
    $word = new COM("word.application") or die("Konnte Word nicht instanziieren");

    //ein leeres Dokument öffnen
    $word->Documents->Add();

    //irgendetwas damit tun
    $word->Selection->TypeText("Dies ist ein Test...");
    $word->Documents[1]->SaveAs($filename);

    //Word schließen
    $word->Quit();

    //Objekt freigeben
    $word null
    Ich habe es so verstanden dass Du in Excel auch Formeln und Scripting hinterlegen willst. Ob das mit einem Excel-Viewer funktioniert wage ich zu bezweifeln. Ich habe es auf jeden fall noch nicht probiert einen Excel-Viewer über das COM-Interface anzusteuern. Das Problem ist, Du musst die entsprechenden API-Funktionen zur Steuerung kennen.


    Bis dann

    Martin

  8. #8
    Registriert seit
    Mar 2006
    Beiträge
    3,422

    Zitat Zitat von Schablone Beitrag anzeigen
    Ich habe es so verstanden dass Du in Excel auch Formeln und Scripting hinterlegen willst.
    Ich will ja eigentlich nichts im Excel-File schreiben, sondern nur Zellwerte auslesen. Liest/gibt es mir das Ergebnis eine Zellformel aus, oder etwa die Formel, die in der Zelle steht? Das wäre dann natürlich nicht sinnvoll für meine Anwendung.
    Gruß nancilla

  9. #9
    Registriert seit
    Sep 2009
    Ort
    Bocholt
    Beiträge
    1,131

    Standard Das Ergebnis

    Hallo nancilla,

    Zitat Zitat von nancilla Beitrag anzeigen
    Liest/gibt es mir das Ergebnis eine Zellformel aus, oder etwa die Formel, die in der Zelle steht? Das wäre dann natürlich nicht sinnvoll für meine Anwendung.
    Ich habs gerade ausprobiert. Man bekommt das Ergebnis. Getestet habe ich:

    Zelle A1 = 10
    Zelle A2 = 1
    Zelle A3 = =A1+A2

    $result = read_from_excel($filename, "A3");
    echo $result;

    Ausgespukt wurde "11".


    Bis dann

    Martin

  10. #10
    Registriert seit
    Sep 2009
    Ort
    Bocholt
    Beiträge
    1,131

    Standard Excel auf einem anderen Rechner starten

    Ich habe gerade nochmals nachgelesen. Wenn ich das richtig verstehe braucht Excel auf deiner lokalen Maschine nicht installiert zu sein.


    com COM::COM ( string $module_name [, mixed $server_name [, int $codepage [, string $typelib ]]] )

    module_name

    Kann eine ProgID, Klassen-ID oder der Moniker der zu ladenden Komponente sein. Eine ProgID ist typischerweise der Applikations- oder DLL-Name, gefolgt von einem Punkt, gefolgt vom Objektnamen, z.B. Word.Application Eine Klassen-ID ist die UUID, die eineindeutig eine bestimmte Klasse identifiziert. Ein Moniker ist eine spezielle Form der Benennung, konzeptähnlich dem URL-Schema, das eine Ressource identifiziert und angibt, wie sie geladen werden soll. Beispielsweise könnten Sie Word laden und ein Objekt erzeugen, das ein Worddokument repräsentiert, indem Sie den vollständigen Pfad zum Worddokument als Modulnamen angeben, oder Sie können LDAP: als einen Moniker verwenden, um das ADSI-Interface zu LDAP zu nutzen.

    server_name

    Name des DCOM-Servers, auf dem die Komponente geladen und ausgeführt werden soll. Ist NULL angegeben, wird das Objekt auf dem Standardwert dieser Applikation ausgeführt. Der Standardwert ist typischerweise die Ausführung auf der lokalen Maschine, obwohl der Administrator die Applikation so konfiguriert haben kann, dass sie auf einer anderen Maschine startet. Wenn Sie einen Nicht-NULL-Wert für den Server angeben, wird PHP das Laden des Objekts zurückweisen, wenn nicht auch die Konfigurationsoption Laufzeit-Konfiguration auf TRUE gesetzt ist.

    Wenn server_name ein Array ist, sollte es die folgenden Elemente enthalten (Groß- und Kleinschreibung wird unterschiedlich interpretiert!). Beachten Sie, dass alle Elemente optional sind (obwohl Sie bei der Angabe eines Usernamens auch ein Passwort angeben müssen). Wenn Sie die Server-Einstellung weglassen, wird der Standardserver verwendet (wie oben beschrieben), und die Instanziierung des Objekts ist nicht von der Laufzeit-Konfiguration-Direktive betroffen.
    hier der Link zum nachlesen:

    PHP: COM - Manual

    Bis dann

    Martin

Ähnliche Themen

  1. Daten in Excel exportieren?
    Von Tetrapack im Forum IP-Symcon WIIPS für Version 1.0
    Antworten: 6
    Letzter Beitrag: 19.02.08, 17:32
  2. EXCEL Export AddIn
    Von wgreipl im Forum Ideen & Anregungen
    Antworten: 11
    Letzter Beitrag: 08.08.06, 08:18
  3. Wer hat Interesse? Diagramm mit Excel erstellt
    Von egonkernien im Forum Allgemeine Diskussion
    Antworten: 10
    Letzter Beitrag: 18.05.06, 12:48
  4. Beleuchtungsdauer in Textdatei dann nach Excel
    Von egonkernien im Forum Allgemeine Diskussion
    Antworten: 3
    Letzter Beitrag: 19.05.05, 18:38