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.
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);
?>
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“.