Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Verschachtelte Json Dateien in Excel importieren.

Forumthread: Verschachtelte Json Dateien in Excel importieren.

Verschachtelte Json Dateien in Excel importieren.
24.02.2026 13:15:40
Heiko34
Hallo,

wir haben stark verschachtelte Json Datein erhalten und wollen diese in eine Excel Datei importieren.
Es gibt den Weg diese über die Powerquery Funktion aufzuteilen ( Records und Lists ).
Das ist jedoch sehr aufwendig, da es sich um viele Dateien handelt.

Kann uns da bitte jemand eine grundsätzliche Idee geben wie man diese Json dateien einfacher auflösen kann?

Gruß Heiko
Anzeige

30
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verschachtelte Json Dateien in Excel importieren.
24.02.2026 14:00:15
snb
Ich würde VBA bevorzügen: ist flexibeler.
Jeder JSON Datei ist anders. So lade mal eine Beispieldatei hoch.
AW: Verschachtelte Json Dateien in Excel importieren.
24.02.2026 14:47:24
Heiko34
Hallo,

die Dateien haben alle den gleichen Aufbau.
Anbei ein Beispiel.

https://www.herber.de/bbs/user/180330.txt
Anzeige
Details: "Am Ende der JSON-Eingabe ...
24.02.2026 20:44:49
schauan
.. wurden überzählige Zeichen ermittelt."

Du kannst die originale json auch zippen und hochladen ...
AW: Details: "Am Ende der JSON-Eingabe ...
24.02.2026 21:33:56
Heiko34
Hier als zip

https://www.herber.de/bbs/user/180331.zip

Ich habe in der Datei nur die Url geändert, wie z. B. hier: "partUrl": "XXX/36044"

Anzeige
AW: und wieder ...
24.02.2026 22:11:09
schauan
Wenn Du die Datei änderst und speicherst kann das passieren:
Details: "Am Ende der JSON-Eingabe wurden überzählige Zeichen ermittelt."
AW: und wieder ...
24.02.2026 22:18:29
Heiko34
Ich habe es nochmal anders probiert

https://www.herber.de/bbs/user/180332.zip

Ich darf nicht die Url hier veröffentlichen.
Anzeige
AW: und wieder ...
25.02.2026 11:12:53
schauan
also, irgendwie gibt es nach wie vor am Ende Probleme. So wie es scheint, fehlt zumindest eine schließende Klammer }
Dann bekommst Du es zumindest mit dem Einlesen aus einer json über Daten | Daten abrufen | Aus Datei | ... rein.

Records und Lists sind dann Verlinkungen in die anderen Ebenen, wenn Du Dich durchklickst kommst Du an die entsprechenden Daten.

Userbild


Anzeige
AW: und wieder ...
25.02.2026 11:34:06
Heiko34
Ja, genau über diesen Weg haben wir es auch hinbekommen. Das Problem ist, dass es sehr viele Dateien sind und diese Verfahrensweise sehr langwierig ist.
Du musst ja...
25.02.2026 14:09:14
Case
Moin Heiko, :-)

... nicht jede JSON-Datei extra einlesen. ;-)

Alle in einen Ordner und dann... ;-)

Im folgenden Beispiel (deine JSON-Datei 2 x kopiert) habe ich in B1 einen Namen vergeben "FolderPath". Ist die Exceldatei einmal gespeichert, nimmt er immer den Pfad (bei OneDrive muss angepasst werden). ;-)
https://www.herber.de/bbs/user/180334.zip

tblErg_1 ist die Schmalspurvariante - die anderen "Spielereien" für dich. ;-)

Die Abfragen sind "Nur Verbindung", damit du es dir anschauen kannst. Was du laden (ins Tabellenblatt) willst, ist dann dein Part. ;-)

Alles nur Ansätze - die aber funktionieren. ;-)

Servus
Case
Anzeige
AW: Du musst ja...
25.02.2026 14:55:37
Heiko34
Hallo Case,

vielen Dank! Ich habe nur ein Problem! Ich weiß gar nicht was ich mit der Datei machen soll. Also wie starte ich das enlesen?

Greuß Heiko
Nun - du hast die...
25.02.2026 15:12:47
Case
Moin, :-)

... Datei JSON_einlesen.xlsx. Da sind die Abfragen drin. Da werden die Dateien ausgelesen, die im Pfad der Exceldatei sind. Wenn du einen festen Pfad vorgeben willst, dann so: ;-)
Quelle = Folder.Files("C:\Temp\JSON\"),

Also nur die Zeile mit Quelle austauschen. ;-)

Hier ist eine Einführung in Power Query: ;-)
https://excelhero.de/power-query/power-query-ganz-einfach-erklaert/

Du hast ja geschrieben, dass du "dies und das in Power Query gemacht hast...". Da bin ich davon ausgegangen, dass es ein Grundverständnis gibt. ;-)

Servus
Case
Anzeige
AW: Nun - du hast die...
25.02.2026 15:21:19
Heiko34
Vielen Dank! Bei mir werden nur die Spaltenüberschriften geladen, wenn ich den

Land Marke Ebene 2 Part ID Item No Menge Status Typ Beschreibung (EN)

Wahrscheinlich sollte ich es aufgeben. Ich danke Dir trotzdem.

Gruß Heiko
Hier ist nun...
25.02.2026 15:24:47
Case
Moin, :-)

... die Abfrage "tblErg_4" in ein Tabellenblatt ausgegeben: ;-)
https://www.herber.de/bbs/user/180335.xlsx

Funktioniert, wenn die XLSX im gleichen Verzeichenis wie die JSON-Dateien ist, sonst wie oben mit festem Pfad. ;-)

Servus
Case
Anzeige
AW: Hier ist nun...
25.02.2026 19:19:40
Heiko34
Hallo,

diese Datei habe ich in den Ordner gelegt, in dem die ganzen json Dateien liegen. Wenn ich dann Deine Datei öffne, werden im Tabellenblatt Ausgabe die Daten zu bomEntries aus der ersten Datei geladen.
Ich bin in diesem Gebiet komplett neu und kann einfach nicht folgen, wie das ganze funktioniert. Wie kann ich die weiteren Daten aus dieser Datei laden? Wie kann ich dann die nächste Datei auswählen?

Ich kann mit Deinen Profiaussagen leider nichts anfangen. Das ist nicht böse gemeint!!! Ich bin einfach nicht annähernd auf Deinem Wissensstand.

Gruß Heiko
Anzeige
Da es nur...
25.02.2026 20:02:28
Case
Moin, :-)

... die eine Beispieldatei von dir gibt, kann ich nicht mehr sagen (zum testen habe ich sie einfach kopiert). ;-)

Du hast geschrieben (alle Dateien gleich aufgebaut): ;-)
https://www.herber.de/forum/messages/2024468.html

Also nehme ich eine Datei werden 24 Zeilen geladen. Kopiere ich diese Datei in dem Verzeichnis, dann 48 Zeilen (usw.). ;-)
Er nimmt alle Dateien in dem Ordner. ;-)

Sind die Dateien unterschiedlich? ;-)

Anonymisiere doch ein paar dieser JSON-Dateien (aber so, dass sie noch "funktionieren") - zippe sie und dann lade die ZIP-Datei hier hoch. ;-)

Und zeige, was du als Ergebnis haben möchtest. ;-)

Servus
Case
Anzeige
AW: Da es nur...
25.02.2026 22:39:49
Heiko34
Hallo Case,

es ist vielleicht ganz gut, wenn ich das erkläre, was wir machen möchten.

Wie erhalten über eine API Abfrage zu jedem Produkt eine json Datei. In dieser Datei stehen zu jedem Produkt die Daten zu einem Gerät. Es sind, wenn wir Record und Lists mit Power Query importieren, 5 Arbeitsblätter. Beispieldatei: jsonmitpowerquery

Für die weitere Verarbeitung benötigen wir aus dem Blatt antwort_0_20260223_211157 die ID des Produktes (In diesem Fall 66212) als Spalte in jedem Arbeitsblatt. Beispiel: IDinjedemBlatt

In der Datei Ergebnis sind die Daten aus beiden Abfragen zusammen kopiert. Über die ID können wir dann die Produkte weiter in Excel weiter verarbeiten.

Ich habe zwei json Dateien als Beispiel drin. Ich habe nur die Url entfernt. Bei mir hat der Import über Power Query funktioniert.

https://www.herber.de/bbs/user/180337.zip

Vielen Dank für Dein Verständnis zu meiner Unwissenheit.

Gruß Heiko



Anzeige
Und schon kommt...
26.02.2026 07:02:12
Case
Moin, :-)

... Licht ins Dunkel: ;-)
https://www.herber.de/bbs/user/180338.xlsx

Die Datenbasis musst du nur einmal laden. ;-)
Über eine Funktion "fnJSON" wird die Basis geladen "JSON_Base". ;-)
Danach filtere und expandiere ich aus eben dieser Basis die verschiedenen Werte. ;-)

Getestet mit deinen beiden JSON-Dateien. ;-)
Den Pfad in A1 musst du ändern. ;-)
Oder du nimmst die "auskommentierte" M-Code-Zeile mit dem Pfad und passt da an, wenn du nicht über eine Zelle im Tabellenblatt gehen willst. ;-)

Servus
Case
Anzeige
AW: Und schon kommt...
26.02.2026 07:13:14
schauan
Moin Ralf,

ich habe mal einen ersten Blick reingeworfen. Wofür gebe ich eigentlich bei Vorgaben den Pfad ein, wenn die documents dann fix bei Download gesucht werden?
AW: Und schon kommt...
26.02.2026 11:57:53
Heiko34
Hallo Case,

das Ergebnis ist genau so, wie wir es brauchen. Nun kommt wieder meine Unkenntnis.

Ich habe die Datei herruntergeladen und aus dem Download Ordner geöffnet. Dann stehen die Daten aus den beiden Beispieldateien in den Arbeitsblättern.
Das Aktualisieren auf echte Dateien macht Probleme.
Ich habe versucht den Pfad in A1 auf den tatsächlichen Pfad, wo die echten Dateien liegen, zu ändern. Muss die Tabelle sich dann automatisch aktualisieren? Muss man irgendetwas tun? Es passierte nichts.
Dann habe ich einen Ordner C:/Temp/Forum angelegt und die echten json Dateien und Deine ursprüngliche Datei aus dem Downloadordner hineingelegt. Es werden immer nur die Daten aus den Beipieldateien angezeigt.

Ich weiß nicht was ich tun soll.

Gruß Heiko
Anzeige
AW: Und schon kommt...
26.02.2026 12:21:42
schauan
Reiter Daten | Aktualisieren | Alle aktualisieren
Wenn du die Dateien...
26.02.2026 12:22:01
Case
Moin, :-)

... zum testen in C:\Temp\Forum\ reinkopiert hast, oder das Verzeichnis geändert hast, dann musst du in der Exceldatei auf der Tastatur STRG+ALT+F5 drücken - dann wird alles aktualisiert. ;-)

Servus
Case
Anzeige
AW: Wenn du die Dateien...
26.02.2026 18:34:07
Heiko34
Hallo Case,

super! Das auf der Tastatur STRG+ALT+F5 drücken war der wichtige Hinweis. Ich habe es immer nur mit F5 probiert.

Grundsätzlich funktioniert es. Es hat sich jedoch herausgestellt, dass es json Dateien gibt, in denen z. B. keine documets ("documents": [],) vorhanden sind. Excel stopt dann und meldet: [Expression.Error] Der Vorgang konnte nicht abgeschlossen werden, da die Enumeration nicht genügend Elemente enthielt.

Kannst Du da noch etwas machen?
Hier ein Beispiel:

https://www.herber.de/bbs/user/180342.zip

Gruß Heiko
Anzeige
Der Fehler kommt...
26.02.2026 19:39:42
Case
Moin, :-)

... daher, dass ich in der Funktion fnJSON pauschal "Record.FieldNames([Value]{0})" mache. Wenn die Liste leer ist, oder "documents" nicht existiert knallt es da: ;-)
Fehler in der Abfrage 'fnJSON'. Expression.Error: Der Vorgang konnte nicht abgeschlossen werden, da die Enumeration nicht genügend Elemente enthielt. Details: [List]

Um das zu umgehen prüfen wir vorher. Also tausche/überschreibe den kompletten M-Code in der Funktion fnJSON mit diesem hier: ;-)

let

Quelle = (Datei as binary) =>
let
Quelle = Json.Document(Datei),
ID = Quelle[id],
Alles = Record.ToTable(Quelle),
NurStrukturen = Table.SelectRows(Alles, each Value.Is([Value], type list) or Value.Is([Value], type record)),
Transform = Table.AddColumn(NurStrukturen, "Data", each if Value.Is([Value], type record) then Table.AddColumn( Record.ToTable([Value]), "ID", each ID) else
if [Value] = null or List.Count([Value]) = 0 then
#table({}, {})
else
Table.AddColumn(
Table.ExpandRecordColumn(
Table.FromList(
[Value],
Splitter.SplitByNothing()
),
"Column1",
Record.FieldNames([Value]{0})
),
"ID",
each ID
))
in
Transform
in
Quelle

Das ist eben getestet - und funktioniert mit deiner Beispiel-JSON. ;-)

Servus
Case
Anzeige
AW: Der Fehler kommt...
26.02.2026 22:30:14
Heiko34
Hallo Case,

was soll ich sagen? Ich bin begeistert. Jetzt läuft es durch!

Vielen Dank für Deine Unterstützung!

Gruß Heiko
Da wird doch nur...
26.02.2026 07:30:38
Case
Moin, :-)

... die Information aus der JSON-Datei ausgelesen: ;-)

Userbild

Mit "Suchen fix in Download..." hat das nichts zu tun. ;-)

Das passiert hier (in der JSON_Base):
Quelle = Folder.Files(Excel.CurrentWorkbook(){[Name="FolderPath"]}[Content]{0}[Column1]),

Servus
Case
Anzeige
AW: Da wird doch nur...
26.02.2026 07:51:15
schauan
... Ich war in Eile, und mir ist gerade auf dem Weg zum Bäcker mein Denkfehler aufgefallen .... Auf documents wird eine Liste der aus dem Excel - Filepfad importierten Dateien erzeugt und nicht der sich aus der Pfadangabe ergebenden zu importierenden Dateien:-(
AW: Da wird doch nur...
26.02.2026 09:50:29
schauan
... hi Ralf,

... die Information aus der JSON-Datei ausgelesen: ;-)
alles klar ;-)
Anzeige
Nur mal blöd gefragt...
26.02.2026 11:31:26
Yal
"Wir erhalten über eine API Abfrage zu jedem Produkt eine json Datei"

API bedeutet de facto Programmierung. Wäre es nicht sinnvoll, diese Programmierung so anzupassen, dass 3 csv erzeugt werden, anstatt einer JSON?
(oder gar zusätzlich, falls nein-weil-wir-die-json-für-noch-was-anderes-brauchen).

VG
Yal
Anzeige
AW: Hier ist nun...
25.02.2026 22:19:36
schauan
Hallo Heiko,

Blatt neu 4 (3)
ich habe im Anhang mal mit Hilfe von ChatGPT einen PQ-Import erstellt, der das komplette File einliest.
Du willst nur die bomENtries, also den Teil von C61:D204?

Blatt Tabelle1
Hier habe ich einen Code, der Das File komplett einliest und in einer Spalte ausgibt. Die Daten habe ich hier willkürlich anhand Kommata getrennt.
Das kann man dann auch auf die bomEntries reduzieren und z.B. in 6 Spalten ausgeben ...

https://www.herber.de/bbs/user/180336.xlsm
Anzeige
AW: Verschachtelte Json Dateien in Excel importieren.
24.02.2026 14:05:53
Yal
Hallo Heiko,

im Prinzip richtest Du in PQ das Importieren einer Datei und wandle diese in einer Funktion, um alle Dateien eines Verzeichnis zu verarbeiten (bzw Teil davon, wenn nach Dateinamen gefiltert wird).
Bei Spalten-basierten Dateien müssen alle dieselbe Spaltenstruktur haben. Bei json ist diese Struktur nicht de facto gegeben. Es gäbe vielleicht die Möglichkeit die Baumstruktur rekursiv zu verarbeiten.

Was sagt die KI deiner Wahl zu der Frage?

VG
Yal
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18