php_com_dotnet.dll download?

Hallo Zusammen,

ich habe auf WIN8 und IPS 2.6 mit PHP 5.4.4 umgestellt.

Leider habe ich keine passende php_com_dotnet.dll für diese PHP version gefunden.

Jetzt funktioniert das Excel schreiben nicht mehr.

Kann mir hier jemand aushelfen?

Danke und Gruß,

Oliver

Wonach hast du denn gesucht? … :wink:

paresy

Hi,
die Dateien im Link sind leer.
Bei mir funktionieren die Funktionen zum Excel steuern nicht mehr.

Ich bekomme einen Fatal Error.

Gruss,

Oliver

Das ist auch korrekt so. Folge einfach der Anleitung.

paresy

Ich bekomme immer noch sehr viele Meldungen im Log:

13.01.2013 22:12:12.260 | 0 | MESSAGE | Kernel | *** IPS STARTET
13.01.2013 22:12:12.262 | 0 | MESSAGE | Kernel | Erstelle…
13.01.2013 22:12:12.406 | 0 | MESSAGE | Kernel | Kernel erstellt #Version: 2.60, CRC: 1F4F6CCA
13.01.2013 22:12:12.406 | 0 | MESSAGE | Kernel | Initialisiere…
13.01.2013 22:12:12.407 | 0 | MESSAGE | Settings | Erstelle…
13.01.2013 22:12:12.455 | 0 | MESSAGE | Settings | Aufräumarbeiten im Settings Ordner…
13.01.2013 22:12:12.463 | 0 | MESSAGE | DebugServer | Erstelle…
13.01.2013 22:12:12.464 | 0 | MESSAGE | ScriptEngine | Erstelle…
13.01.2013 22:12:12.472 | 0 | MESSAGE | ScriptEngine | Benutze PHP 5.4.4
13.01.2013 22:12:12.699 | 0 | MESSAGE | ScriptEngine | >OpenSSL #1: 1.0.0
13.01.2013 22:12:12.701 | 0 | MESSAGE | ScriptEngine | >OpenSSL #1: 1.0.0
13.01.2013 22:12:12.702 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_bz2.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.704 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_com_dotnet.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.718 | 0 | MESSAGE | ScriptEngine | >Erweiterung: php_curl.dll
13.01.2013 22:12:12.722 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_exif.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.724 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_fileinfo.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.740 | 0 | MESSAGE | ScriptEngine | >Erweiterung: php_gd2.dll
13.01.2013 22:12:12.749 | 0 | MESSAGE | ScriptEngine | >Erweiterung: php_gettext.dll
13.01.2013 22:12:12.751 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_gmp.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.753 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_imap.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.754 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_ldap.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.758 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_mbstring.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.759 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_mysql.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.761 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_mysqli.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.762 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_openssl.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.764 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_pdo_firebird.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.766 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_pdo_mysql.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.767 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_pdo_oci.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.768 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_pdo_odbc.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.770 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_pdo_pgsql.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.771 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_pdo_sqlite.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.774 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_pgsql.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.779 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_shmop.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.782 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_snmp.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.797 | 0 | MESSAGE | ScriptEngine | >Erweiterung: php_soap.dll
13.01.2013 22:12:12.799 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_sockets.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.801 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_sqlite3.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.802 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_tidy.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.804 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_xmlrpc.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.806 | 0 | ERROR | ScriptEngine | Fehler beim Überprüfen der Erweiterung: php_xsl.dll, Fehler: Could not create file-mapping object!
13.01.2013 22:12:12.818 | 0 | MESSAGE | TimerPool | Erstelle…
13.01.2013 22:12:12.823 | 0 | MESSAGE | LicensePool | Version: 01.10.12, #2519
13.01.2013 22:12:12.824 | 0 | MESSAGE | LicensePool | Limit WebFront: 0
13.01.2013 22:12:12.824 | 0 | MESSAGE | LicensePool | Limit Variable: 0
13.01.2013 22:12:12.824 | 0 | MESSAGE | FilePool | Erstelle…

Ich bin mir aber nicht sich, ob dies wirklich die Ursache des Fehlers ist.

Beim Befehl:

30 $Workbook = $excel_app->Workbooks->Open("$filename") or Die(„Did not open $filename $Workbook“);

kommt nur die Fehlermeldung:

Fatal error: in [Verbrauchserfassung\Tagesdaten in Excel] on line 30

Gruß,

Oliver

Du hast wohl alle Erweiterungen kopiert :rolleyes:

Kann sein daß die leeren Dateien nicht gehen. Häng mal an den Dateinamen der benötigten ein „.txt“ ran, schreib anton rein und benenn das Ding wieder um. Dann nochmal laut Anweisung vorgehen.

Gruß
Bruno

Ich glaube schon, das das COM richtig angesprochen wird. Die DLL müsste ja auch erst in einer späteren Version zusätzlich eingebunden werden.

Ich bekomme jetzt folgende Fehlermeldung:

Fatal error: in [Verbrauchserfassung\Tagesdaten in Excel] on line 30
Abort Processing during Fatal-Error: Uncaught exception ‚com_exception‘ with message 'Source: Microsoft Office ExcelDescription: Microsoft Office Excel kann auf die Datei ‚\Asus\NETDATA\Tagesdaten.xlsx‘ nicht zugreifen. Dies kann mehrere Gründe haben:

• Der Name des Dokuments oder der Pfad ist nicht vorhanden.
• Das Dokument wird von einem anderen Programm verwendet.
• Der Name der Arbeitsmappe, die gespeichert werden soll, ist identisch zu dem Namen eines anderen Dokuments, welches schreibgeschützt ist.’ in C:\IP-Symcon\scripts\14352.ips.php:30
Stack trace:
#0 C:\IP-Symcon\scripts\14352.ips.php(30): variant->Open(’//Asus/NETDATA/…’)
#1 {main}
thrown
Error in Script C:\IP-Symcon\scripts\14352.ips.php on Line 30

Bei folgendem Code:

<?
//Aktuelle Zeilennummer einlesen
$raw = GetValue(41411 /*[Verbrauchserfassung\Excel Zeile]*/);

//$filename = IPS_GetKernelDir()."meldungen\\ereignisse\\Tagesdaten.xlsx";
$filename = "//Asus/NETDATA/Tagesdaten.xlsx";
$Worksheet = "Tabelle1";            //Option 1 über die Bezeichnung
$Worksheet = 1;                     //Option 2 über die Nummer
$column = "A";

$d_temp 				= GetValue (36368 /*[Verbrauchserfassung\Aussentemperaturdurchschnitt\Durchschnittstemperatur]*/);
$Zähler_null_HH 	= GetValue(46184 /*[Verbrauchserfassung\Zählerstände\Zähler Haushalt real]*/);
$Zähler_null_HHT  = GetValue(27663 /*[Verbrauchserfassung\Zählerstände\Zähler Heizung HT real]*/);
$Zähler_null_HNT  = GetValue(50390 /*[Verbrauchserfassung\Zählerstände\Zähler Heizung NT real]*/);
$Zähler_null_WP 	= GetValue(16153 /*[Verbrauchserfassung\Zählerstände\Zähler Wärmepumpe real]*/);
$Zähler_null_EH 	= GetValue(14275 /*[Verbrauchserfassung\Zählerstände\Zähler E-Heizung real]*/);
$Zähler_null_DHE 	= GetValue(51881 /*[Verbrauchserfassung\Zählerstände\Zähler DHE real]*/);
$Zähler_null_WW 	= GetValue(57069 /*[Verbrauchserfassung\Zählerstände\Zähler Warmwasser real]*/);
$TAMin 				= GetValue (55448 /*[Temperaturen\Aussen min.]*/);
$TAMax 				= GetValue (12665 /*[Temperaturen\Aussen max.]*/);
$PHMin 				= GetValue (56847 /*[Verbrauchserfassung\Leistung Haushalt Min]*/);
            {
               //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
                }
                //Auswahl des Worksheet
                $Worksheet = $Workbook->Worksheets($Worksheet);
               
                //Aktivieren des Worksheet
                $Worksheet->activate;

//Start schreiben
//Datum Spalte A
  					 //zusammensetzen der Zelle
                $cell = $column.$raw;
						echo $cell;
	             //Auswahl der Zelle
                $excel_cell = $Worksheet->Range($cell);
                //Aktivieren der Zelle
                $excel_cell->activate;
                
                //prüfen ob Zelle auch leer
                 //Lesen der Stringinformation aus der aktive Zelle
                $string = $excel_cell->value;
						echo $string;
						if ($string != Null)
						{
						echo "nicht leer";
						
					 //Schliessen der Excel-Instanz und freigeben des Speichers
                $Workbook->Close;
                unset($Worksheet);
                unset($Workbook);
                $excel_app->Workbooks->Close();
                $excel_app->Quit();
                unset($excel_app);
                
                //10 Zeilen springen
						SetValue(41411 /*[Verbrauchserfassung\Excel Zeile]*/ ,$raw+10);
						}
						else {
                //Schreiben der Stringinformation in die aktive Zelle
                $excel_cell->value = date("d.m.y");

//Durschnittstemperatur Spalte B

                $column = "B";
	 //zusammensetzen der Zelle
                $cell = $column.$raw;
						echo $cell;
	             //Auswahl der Zelle
                $excel_cell = $Worksheet->Range($cell);
                //Aktivieren der Zelle
                $excel_cell->activate;
                //Schreiben der Stringinformation in die aktive Zelle
                $excel_cell->value = $d_temp;

//Zähler Haushaltsstrom Spalte C

                $column = "C";
	 //zusammensetzen der Zelle
                $cell = $column.$raw;
						echo $cell;
	             //Auswahl der Zelle
                $excel_cell = $Worksheet->Range($cell);
                //Aktivieren der Zelle
                $excel_cell->activate;
                //Schreiben der Stringinformation in die aktive Zelle
                $excel_cell->value = $Zähler_null_HH;
                
//Zähler Heizung HT Spalte D

                $column = "D";
	 //zusammensetzen der Zelle
                $cell = $column.$raw;
						echo $cell;
	             //Auswahl der Zelle
                $excel_cell = $Worksheet->Range($cell);
                //Aktivieren der Zelle
                $excel_cell->activate;
                //Schreiben der Stringinformation in die aktive Zelle
                $excel_cell->value = $Zähler_null_HHT;
                
//Zähler Heizung NT Spalte E

                $column = "E";
	 //zusammensetzen der Zelle
                $cell = $column.$raw;
						echo $cell;
	             //Auswahl der Zelle
                $excel_cell = $Worksheet->Range($cell);
                //Aktivieren der Zelle
                $excel_cell->activate;
                //Schreiben der Stringinformation in die aktive Zelle
                $excel_cell->value = $Zähler_null_HNT;

//Zähler WP Spalte F

                $column = "F";
	 //zusammensetzen der Zelle
                $cell = $column.$raw;
						echo $cell;
	             //Auswahl der Zelle
                $excel_cell = $Worksheet->Range($cell);
                //Aktivieren der Zelle
                $excel_cell->activate;
                //Schreiben der Stringinformation in die aktive Zelle
                $excel_cell->value = $Zähler_null_WP;
                
//Zähler E-Heizung Spalte G

                $column = "G";
	 //zusammensetzen der Zelle
                $cell = $column.$raw;
						echo $cell;
	             //Auswahl der Zelle
                $excel_cell = $Worksheet->Range($cell);
                //Aktivieren der Zelle
                $excel_cell->activate;
                //Schreiben der Stringinformation in die aktive Zelle
                $excel_cell->value = $Zähler_null_EH;
                
//Zähler DHE Spalte H

                $column = "H";
	 //zusammensetzen der Zelle
                $cell = $column.$raw;
						echo $cell;
	             //Auswahl der Zelle
                $excel_cell = $Worksheet->Range($cell);
                //Aktivieren der Zelle
                $excel_cell->activate;
                //Schreiben der Stringinformation in die aktive Zelle
                $excel_cell->value = $Zähler_null_DHE;
                
//Zähler Warmwasser Spalte I

                $column = "I";
	 //zusammensetzen der Zelle
                $cell = $column.$raw;
						echo $cell;
	             //Auswahl der Zelle
                $excel_cell = $Worksheet->Range($cell);
                //Aktivieren der Zelle
                $excel_cell->activate;
                //Schreiben der Stringinformation in die aktive Zelle
                $excel_cell->value = $Zähler_null_WW;
                
//Aussen Min Spalte J

                $column = "J";
	 //zusammensetzen der Zelle
                $cell = $column.$raw;
						echo $cell;
	             //Auswahl der Zelle
                $excel_cell = $Worksheet->Range($cell);
                //Aktivieren der Zelle
                $excel_cell->activate;
                //Schreiben der Stringinformation in die aktive Zelle
                $excel_cell->value = $TAMin;
                
//Aussen Max Spalte K

                $column = "K";
	 //zusammensetzen der Zelle
                $cell = $column.$raw;
						echo $cell;
	             //Auswahl der Zelle
                $excel_cell = $Worksheet->Range($cell);
                //Aktivieren der Zelle
                $excel_cell->activate;
                //Schreiben der Stringinformation in die aktive Zelle
                $excel_cell->value = $TAMax;
                
//Leistung Haushalt Min Spalte L

                $column = "L";
	 //zusammensetzen der Zelle
                $cell = $column.$raw;
						echo $cell;
	             //Auswahl der Zelle
                $excel_cell = $Worksheet->Range($cell);
                //Aktivieren der Zelle
                $excel_cell->activate;
                //Schreiben der Stringinformation in die aktive Zelle
                $excel_cell->value = $PHMin;
                
//Abschließen
                //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
                
                $Workbook->Close;
                unset($Worksheet);
                unset($Workbook);
                $excel_app->Workbooks->Close();
                $excel_app->Quit();
                unset($excel_app);
            }
				}
//Zeilennummer +1 und wieder zurückspeichern
SetValue(41411 /*[Verbrauchserfassung\Excel Zeile]*/ ,$raw+1);
?>

Hat das schon mal jemand gehabt?

Schreibrechte existieren für die Datei.

Vielen Dank und Gruß,

Oliver

möglicherweise hat der IPS-Dienst keine Rechte, auf den Share //ASUS… zuzugreifen.

System-Dienste könne nicht auf Netzwerk-Freigaben zugreifen.

paresy

Hi Paresy,
es funktioniert auch nicht auf einem externen USB-Stick oder im IPS-Verzeichnis:


<?
//Aktuelle Zeilennummer einlesen
$raw = GetValue(41411 /*[Verbrauchserfassung\Excel Zeile]*/);

//$filename = IPS_GetKernelDir()."\\Test.xlsx";
$filename = IPS_GetKernelDir()."meldungen\\ereignisse\\Tagesdaten.xlsx";
//$filename = "//Asus/NETDATA/Tagesdaten.xlsx";
//$filename = "G:/Tagesdaten.xlsx";
$Worksheet = "Tabelle1";            //Option 1 über die Bezeichnung
$Worksheet = 1;                     //Option 2 über die Nummer
$column = "A";

$d_temp 				= GetValue (36368 /*[Verbrauchserfassung\Aussentemperaturdurchschnitt\Durchschnittstemperatur]*/);
$Zähler_null_HH 	= GetValue(46184 /*[Verbrauchserfassung\Zählerstände\Zähler Haushalt real]*/);
$Zähler_null_HHT  = GetValue(27663 /*[Verbrauchserfassung\Zählerstände\Zähler Heizung HT real]*/);
$Zähler_null_HNT  = GetValue(50390 /*[Verbrauchserfassung\Zählerstände\Zähler Heizung NT real]*/);
$Zähler_null_WP 	= GetValue(16153 /*[Verbrauchserfassung\Zählerstände\Zähler Wärmepumpe real]*/);
$Zähler_null_EH 	= GetValue(14275 /*[Verbrauchserfassung\Zählerstände\Zähler E-Heizung real]*/);
$Zähler_null_DHE 	= GetValue(51881 /*[Verbrauchserfassung\Zählerstände\Zähler DHE real]*/);
$Zähler_null_WW 	= GetValue(57069 /*[Verbrauchserfassung\Zählerstände\Zähler Warmwasser real]*/);
$TAMin 				= GetValue (55448 /*[Temperaturen\Aussen min.]*/);
$TAMax 				= GetValue (12665 /*[Temperaturen\Aussen max.]*/);
$PHMin 				= GetValue (56847 /*[Verbrauchserfassung\Leistung Haushalt Min]*/);
            {
               //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

bringt folgende Fehlermeldung:

Fatal error: in [Verbrauchserfassung\Tagesdaten in Excel] on line 32
Abort Processing during Fatal-Error: Uncaught exception ‚com_exception‘ with message 'Source: Microsoft Office ExcelDescription: Microsoft Office Excel kann auf die Datei ‚C:\IP-Symcon\meldungen\ereignisse\Tagesdaten.xlsx‘ nicht zugreifen. Dies kann mehrere Gründe haben:

• Der Name des Dokuments oder der Pfad ist nicht vorhanden.
• Das Dokument wird von einem anderen Programm verwendet.
• Der Name der Arbeitsmappe, die gespeichert werden soll, ist identisch zu dem Namen eines anderen Dokuments, welches schreibgeschützt ist.’ in C:\IP-Symcon\scripts\14352.ips.php:32
Stack trace:
#0 C:\IP-Symcon\scripts\14352.ips.php(32): variant->Open(‚C:\IP-Symcon\me…‘)
#1 {main}
thrown
Error in Script C:\IP-Symcon\scripts\14352.ips.php on Line 32

Manuell ist das Öffnen, Bearbeiten und Speichern der Datei kein Problem.
Dateizugriff ist auf „Jeder“.

Hat noch Jemand eine Idee?

Vielen Dank und Gruß,

Oliver

Kann man vielleicht den IPS dienst mit höheren Rechten starten?

Schade, dass das Excel schreiben mit WIN 8 nicht mehr funktioniert.
Es war ein toller weg der Protokollierung.