PHPExcel-Paket

Bevor ich da weiter probiere frage ich besser mal bei den Spezialisten nach. Vielleicht ist das ja ein sinnloses Unterfangen und ich lasse das sein und spare viel sinnlose Zeit. Ich möchte gerne Daten aus Scripten nach Excel transportieren. Habe gelesen, dass das in PHP eigentlich relativ einfach über das PHPExcel-Paket gehen müsste. Das muss aber irgendwie in die PHP-Umgebung eingebracht werden. Dazu sollte der composer dienen, den ich installieren wollte. Aber irgendwie gelingt mir das nicht. Bei dem Versuch über php -r „copy(‚https://getcomposer.org/installer‘, ‚composer-setup.php‘);“ diesen zu laden kommt die Meldung: -sh: php: not found
Mein System läuft auf einer Symbox. Scheinbar wird PHP nicht gefunden. Wo liegt denn PHP auf der Symbox?

Hast du dir mal unser Excel SDK angesehen?

Das ist zwar für’s Archiv, aber ich denke das kannst du in VBA auch anpassen und andere Dinge aus Symcon in dein Excel schön automatisiert zu bekommen: SDK (Excel) — IP-Symcon :: Automatisierungssoftware

paresy

Danke für die Info. Deine Antwort sagt mir, das war keine gute Idee mit dem PHPExcel :joy:
Vielleicht geht das aus irgendwelchen Gründen ja auch gar nicht. Ja ich schaue mir das mal an.

Ich lese einige Excel mit PHP in IP-Symcon aus. Dafür habe ich den Composer auf einer anderen Maschine laufen lassen und den vendor Ordner auf das IP-Symcon System in den Scripts Ordner kopiert. Das Script selbst sieht dann so aus:

/* Excel zu PHP*/
require './vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;

$sheetnames = ['Tabelle1'];

$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');

Ah ja, hört sich gut an. Danke für den Tipp. Würde das auch auf der Symbox funktionieren?

Vermutlich schon. Dateien dann per SCP (winSCP) kopieren.

Ist auf jeden Fall einen Versuch wert. Ich kopiere also, so hab ich Dich verstanden, die PhpExcel Dateien nach dem Herunterladen, in das Script-Verzeichnis der Symbox. Ich werde berichten ob es funkt🤗

Du musst über compiser schon die Abhängigkeiten auch herunterladen und mit kopieren.

Super. Habe das gerade ausprobiert, funktioniert. Ich habe soeben meine erste kleine Excel Datei auf diese Weise beschrieben. Vielen Dank…
Eine Frage noch. Es gibt das Verzeichnis var/lib/symcon/scripts in welches ich die das vendor verzeichnis, die composer.json und die composer.lock kopiert habe. Es gibt aber auch ein Verzeichnis namens mnt/data/symcon/scripts. In diesem liegen die Dateien ebenfalls. Kannst Du mir das erklären?

wie versprochen hier meine Vorgehensweise…ohne jegliche Garantie, bei mir funktioniert das zumindest,…um die PHPSpreadsheet-Klasse auf der Symbox, über den Umweg der PHP-Installation auf meinem Windows-PC, zu installieren:
Sollte es Gründe geben die gegen diese Vorgehensweise sprechen, Paresy kann vielleicht mal draufschauen, dann bitte den Beitrag einfach löschen. Ich bin erst sehr kurz im Thema IP-Symcon…und überschaue sicherlich vieles noch nicht, sorry.

Schritt 1: Installation von Composer auf Windows
Composer von der Composer-Website herunterladen und installieren:

Umgebungsvariablen (Systemvariablen, Path) anpassen:
C:\ProgramData\ComposerSetup\bin

Überprüfen ob korrekt installiert:
Gebe „Composer“ auf der Systemconsole ein. Du solltest eine Ausgabe ähnlich der folgenden sehen:
Composer version 2.x.x 2021-xx-xx xx:xx:xx

Schritt 2: Installation von PHPSpreadsheet
Projektverzeichnis erstellen:

Erstelle ein neues Verzeichnis , z.B. C:\Muster_projekt.
Gehe in der Systemconsole zu diesem Verzeichnis

Composer initialisieren:
Führe den folgenden Befehl aus, um eine composer.json-Datei zu erstellen:
composer init

PHPSpreadsheet installieren:
Führe den folgenden Befehl aus, um PHPSpreadsheet zu installieren:
composer require phpoffice/phpspreadsheet

PHP.inianpassen:
Öffne die php.ini-Datei und gebe frei.
php.ini
extension=zip
extension=fileinfo
extension=gd

Schritt 3: Dateien auf die SymBox übertragen
Dateien kopieren:
Kopiere den vendor-Ordner sowie die composer.json- und composer.lock-Dateien in das Verzeichnis scripts der SymBox.

Schritt 4: Verwendung von PHPSpreadsheet in IP-Symcon
Klassenbeschreibung
Spreadsheet: Hauptklasse für das Erstellen und Bearbeiten von Tabellenblättern.

Reader: Klasse zum Lesen von Excel-Dateien.
Writer: Klasse zum Speichern von Excel-Dateien.
IOFactory: Zentrale Klasse zum Erstellen von Readern und Schreibern.

Hier ein kleines Beispielskript, das zeigt, wie man eine Excel-Datei öffnet, liest und beschreibt:

<?php require './vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; // Pfad zur vorhandenen Excel-Datei $filePath = __DIR__ . '/example.xlsx';//oder den gewünschten Pfad eingeben // Erstelle einen Reader und lade die Excel-Datei $reader = IOFactory::createReader('Xlsx'); $spreadsheet = $reader->load($filePath); // Greife auf das aktive Arbeitsblatt zu $sheet = $spreadsheet->getActiveSheet(); // Schreibe neue Daten in die Zellen $sheet->setCellValue('A2', 'New Data'); $sheet->setCellValue('B2', 'More Data'); // Speichere die Änderungen in der gleichen Datei $writer = new Xlsx($spreadsheet); $writer->save($filePath); echo "Datei aktualisiert: " . $filePath . "\n"; // Lade die Datei erneut $spreadsheet = $reader->load($filePath); // Greife auf das aktive Arbeitsblatt zu $sheet = $spreadsheet->getActiveSheet(); // Lese Daten aus den Zellen $cellValueA2 = $sheet->getCell('A2')->getValue(); $cellValueB2 = $sheet->getCell('B2')->getValue(); echo "Wert in A2: " . $cellValueA2 . "\n"; echo "Wert in B2: " . $cellValueB2 . "\n"; ?>

bei der beschriebenen Vorgehensweise werden die Abhängigkeiten berücksichtigt