Man könnte (nach dem Sonnenaufgang und dem Salat) meinen, ich säße den ganzen Tag unnütz in der Küche. Das ist natürlich quatsch 🙂
Momentan versuche ich für ein kleines Projekt aus vorhandenen XML Dokumenten und Exceldaten Datenbankabfragen zu bauen, die Werte aus dem XML Dokument mit Werten in Exceldateien (bzw. extrahiert in eine MySQL DB) vergleichen, und bei Bedarf neue Exceldateien generieren.
Excel ist – dank der ausgezeichneten Microsoft Technik – kein besonders freundliches Format, besonders nicht, wenn es viele ausländische Zeichen und somit um Zeichenkodierung geht (meist läuft Exel mit Windows Latin 1 oder ähnlichem Sch***, kein UTF-8 oder dergleichen).
Was hier im Moment passiert ist folgendes:
- Die Datenbasis wird aus Excel mithilfe eines kleinen Makros (VBA) als CSV in eine Textdatei geschrieben
- Die Datenbasis (= .csv) kann hochgeladen und somit in die DB geschrieben werden
- XML Dokumente, die mit der Datenbasis verglichen und evtl. angepasst werden sollen, werden ebenfalls über HTML Formulare hochgeladen
- Mit ein paar XPath Angaben und SimpleXML werden in diesen XML Dokumenten Values an bestimmten Nodes mit Daten der Datenbank verglichen
- Sofern entsprechende Daten in der DB vorhanden sind, werden die Nodes in der XML Datei aktualisiert
- Nach Aktualisierung werden die neuen XML Dokumente zum Download angeboten
- Neben diesen aktualisierten XML Dokumenten werden für ein weiteres Bearbeiten wieder Exceldateien generiert (warum genau, ist an dieser Stelle erstmal nicht so wichtig 🙂
Im Grunde sowas wie Find & Replace, nur auf ein ganz konkretes Anwendungsgebiet gemünzt.
Mit SimpleXML kann man in PHP XML Dateien recht einfach einlesen:
if(!$simple = simplexml_load_file($pfad.$einzelXML)){
trigger_error("Error beim Lesen der XML Datei(en)", E_USER_ERROR);
};
…und leicht mit XPath bestimmte Nodes auffinden:
foreach($simple->Xpath('//AttributeValue') as $Knoten){ .... }
Hier schnell ein paar Links, die eventuell für andere auch von Interesse sein könnten:
+ SimpleXML in PHP
+ Handbuch Excel VBA
+ Excel Reader
+ Excel2Mysql