Anfängerfrage Python oder was eignet sich für mich XML zu Excel

Himuro

Kabelverknoter(in)
Gerne möchte ich gezielt gewisse Informationen aus einem XML file ziehen und in einem Excel Dokument platzieren.

Ich habe keinerlei Programmierkenntnisse, was ich bereits gehört habe ist dass die Programmiersprache Python gut dazu geeignet sei.
Was ich gerne wissen möchte ist, wie bereite ich mich am besten für so eine Aufgabe, was benötige ich dazu. und gibt es vielleicht noch andere, leichtere Wege diese Aufgabe zu erledigen?

Vielen Dank im Voraus für die Hilfestellung!

Gruss Himuro
 
Du kannst in Excel doch direkt aus XML importieren (Excel 2016 über Daten-Aus anderen Quellen - XML...) - reicht das nicht? oder muss es automatisiert sein?
 
Komplett ohne Programmierkenntnisse wird es auch mit Python schwierig. Es gibt aber ja einige fertige Programme, die gezielt Inhalte aus XML Dateien extrahieren und als Textdatei (z. B. CSV) abspeichern. In einem weiteren Schritt könntest du diese Daten dann in Excel importieren.

Dieses Vorgehen (extrahieren und importieren in zwei getrennten Schritten) wäre auch das, was ich mit Python machen würde. Und ja, Python kann das natürlich und auch recht simpel. Komplett ohne Vorkenntnisse ist aber auch das nicht mal eben in 10 Minuten getan.
 
Du kannst in Excel doch direkt aus XML importieren (Excel 2016 über Daten-Aus anderen Quellen - XML...) - reicht das nicht? oder muss es automatisiert sein?
Das reicht leider nicht. Ich kann ein "Rezept" einer Maschine als XML abspeichern und möchte dann gewisse Werte aus diesem File in ein Formular im Excel eintragen.

Komplett ohne Programmierkenntnisse wird es auch mit Python schwierig. Es gibt aber ja einige fertige Programme, die gezielt Inhalte aus XML Dateien extrahieren und als Textdatei (z. B. CSV) abspeichern. In einem weiteren Schritt könntest du diese Daten dann in Excel importieren.

Dieses Vorgehen (extrahieren und importieren in zwei getrennten Schritten) wäre auch das, was ich mit Python machen würde. Und ja, Python kann das natürlich und auch recht simpel. Komplett ohne Vorkenntnisse ist aber auch das nicht mal eben in 10 Minuten getan.
Ich möchte beispielsweise aus meiner XML Datei folgendes auslesen und im Excel Formular platzieren;


</item>


-<item name="main_ini.Recipe.MAIN.BodyLength.Value" userLevel="0" systemLevel="0" unitName="mm" textKey="gI.main_BodyLength" varSave="false" accessMode="3" helpName="Pi.main_BodyLength">


-<floatValue default="0.0" rangeMode="34" scaleFactor="0.01" scaleMaxItemName="main_ini.Recipe.MAIN.BodyLength.MaxValue" scaleMinItemName="main_ini.Recipe.MAIN.BodyLength.MinValue" scaleMax="0.0" scaleMin="0.0" max="0.0" min="0.0" precision="0">

<value>117.0</value>

und dann im Formular folgendes eintragen:

Body length: 117 mm




Die Struktur dieser "Rezepte" ist immer gleich, nur die Werte variieren. Eine Software die das speditiv umwandeln kann würde vieles so leichter machen. Das müsste man ja bloss 1x programmieren und dann hat man die Informationen schön übersichtlich immer im dazu erstellten Excel Datenblatt.

Gruss Himuro
 
Die gute Nachricht ist, es gibt python Pakete, die das Bearbeiten von Excel Dateien möglich machen. Hätte ich gar nicht gedacht, das bedeutet ja, dass die Datenstruktur offen liegt.
Dann musst du nur noch ein Skript basteln, das die XML Dateien nach den entsprechenden Einträgen durchsucht.
Du kannst z.B. das Dokument anhand "</item>" splitten, dann hättest du alle Items in einer Liste und musst aus den Einträgen nur noch den Parameter und den Wert extrahieren.
 
Sollte mit dem python module xmltodict kein Problem darstellen:


Dann kannst du aus dem dictionary herausfiltern was auch immer du möchtest
 
Ich hatte gerade zeit und laune:

die datei xml_data.xml:

XML:
<asdf>
   <item name="main_ini.Recipe.MAIN.BodyLength.Value" userLevel="0" systemLevel="0" unitName="mm" textKey="gI.m    ain_BodyLength" varSave="false" accessMode="3" helpName="Pi.main_BodyLength">7</item>
   <floatValue default="0.0" rangeMode="34" scaleFactor="0.01" scaleMaxItemName="main_ini.Recipe.MAIN.BodyLength.MaxValue" scaleMinItemName="main_ini.Recipe.MAIN.BodyLength.MinValue" scaleMax="0.0" scaleMin="0.0" max="0.0" min="0.0" precision="0">8</floatValue>
   <value>117.0</value>
</asdf>

python script xml_parse.py:

Python:
import xmltodict

def read_file(path):
  with open(path, 'r') as file:
    return file.read()

if __name__ == "__main__":
  value_dict = xmltodict.parse(read_file("/home/gary/xml_data.xml"))
  print("Body length:", value_dict["asdf"]["value"], "mm")


script ausführen:

Bash:
python3 xml_parse.py

liefert:

Body length: 117.0 mm
 
Erstmal vielen Dank für eure zahlreichen Antworten! Befinde mich derzeit in China und hab leider nur wenig Freizeit, deswegen schreib ich erst jetzt.

Wenn die Datei immer identisch ist, kannst Du es ja mal mit der Makro-Aufzeichnung versuchen.
Ich verstehe leider nur Bahnhof, wie gesagt Anfänger :-P

@Gary94 wow, vielen Dank dass Du Dir die Mühe genommen hast um mir das anhand eines Beispiel`s aufzuzeigen.
Ich hab mir aufs Handy das Mimo App heruntergeladen um mir ein bisschen dei Python Basics abzueignen.
 
Ich verstehe leider nur Bahnhof, wie gesagt Anfänger :-P
Excel hat eine integrierte Makro-Sprache (VBA) mit der man programmieren kann. Damit man das aber nicht machen muss, gibt es zusätzlich einen Makro-Recorder, der aufzeichnet was Du tust und daraus automatisch ein Makro erstellt.

Außerdem gibt es umfangreiche Import-Optionen, die schon eingebaut sind.
Du kannst unter
Datei->Optionen->Menüband anpassen -> rechts "Entwicklertools"
erweiterte Menüpunkte anschalten.

Dann im Reiter "Entwicklertools", rechts auf "Quelle" klicken. Unten findest Du dann "XML-Zuordnungen ...".
Hier kannst Du so eine XML laden und den gesuchten Wert in eine Zelle ziehen. Wenn Du nun oben auf "Importieren" klickst, wird nur der gewünschte Wert aus der XML-Datei in die Zelle kopiert.

Je nachdem, wie Dein Ziel-Worksheet nun aufgebaut ist und wie Deine Dateien heißen, kannst Du den Vorgang mit dem Makrorekorder automatisieren und eine Tastenkombination zuweisen.

Für mehr Details am besten mal nach "Excel XML mapping" suchen.


Edit: Ausprobiert mit Excel 365, sollte es aber schon lange geben.
 
Excel hat eine integrierte Makro-Sprache (VBA) mit der man programmieren kann. Damit man das aber nicht machen muss, gibt es zusätzlich einen Makro-Recorder, der aufzeichnet was Du tust und daraus automatisch ein Makro erstellt.

Außerdem gibt es umfangreiche Import-Optionen, die schon eingebaut sind.
Du kannst unter
Datei->Optionen->Menüband anpassen -> rechts "Entwicklertools"
erweiterte Menüpunkte anschalten.

Dann im Reiter "Entwicklertools", rechts auf "Quelle" klicken. Unten findest Du dann "XML-Zuordnungen ...".
Hier kannst Du so eine XML laden und den gesuchten Wert in eine Zelle ziehen. Wenn Du nun oben auf "Importieren" klickst, wird nur der gewünschte Wert aus der XML-Datei in die Zelle kopiert.

Je nachdem, wie Dein Ziel-Worksheet nun aufgebaut ist und wie Deine Dateien heißen, kannst Du den Vorgang mit dem Makrorekorder automatisieren und eine Tastenkombination zuweisen.

Für mehr Details am besten mal nach "Excel XML mapping" suchen.


Edit: Ausprobiert mit Excel 365, sollte es aber schon lange geben.

Gibt es dieses Feature auch bei Word? Sorry ich hab mich bei der Datei geirrt, es ist nun doch Word.
 
Gibt es dieses Feature auch bei Word? Sorry ich hab mich bei der Datei geirrt, es ist nun doch Word.
Hab ich noch nicht gemacht, aber Microsoft sagt: Gibt es.
Scheint genauso zu gehen.

Entwicklertools kann man genauso wie bei Excel anschalten, gibt auch den Makro-Rekorder,... scheint alles gleich zu sein.
Wo das dann eingefügt wird, weiß ich aber nicht, vielleicht über ne Textmarke...

Es gibt auch Office-Foren, die richtig tief in der Thematik stecken.
 
Zurück