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

PQ PDF-Import .ExpandTableColumn nur existierende Columns

Forumthread: PQ PDF-Import .ExpandTableColumn nur existierende Columns

PQ PDF-Import .ExpandTableColumn nur existierende Columns
10.05.2025 14:50:20
Bona
Hallo,
beim Import von PDF-Dateien wird durch "Table.ExpandTableColumn" immer die gleiche feste Anzahl Spalten angelegt. In der Regel ist die letzte Spalte "Column13" leer und überflüssig, jedoch gibt es Fälle in denen durch unglückliche Formatierung der PDF-Datei beim Import eine zusätzliche Spalte angelegt wird und somit alle folgenden Spalten um eine verschoben sind, d.h. daß die Daten von "Column12" in "Column13" stehen.

PDF_Erweitert = Table.ExpandTableColumn(PDF_Tabellen, "Data", {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13"}),

PDF_Komplett = Table.RemoveColumns(PDF_Erweitert,{"Id", "Name", "Kind"}),
PDF_Sum = if Table.HasColumns(PDF_Komplett,"Column13") then
let
PDF_NewSum = Table.AddColumn(PDF_Komplett,"NewSum", each if [Column13]=null then [Column12] else [Column13]),
PDF_NewPor = Table.AddColumn(PDF_NewSum,"NewPorto", each if [Column13]=null then [Column11] else [Column12]),
PDF_NewNNK = Table.AddColumn(PDF_NewPor,"NewNK", each if List.Contains({"NK"},[Column11]) then [Column11] else [Column10]),
PDF_ColDel = Table.RemoveColumns(PDF_NewNNK, {"Column10", "Column11", "Column12", "Column13"})
in
PDF_ColDel
else
null,

Der obige Code funktioniert, aber da es immer sehr viele PDF-Dateien sind, möchte ich das optimieren, daß die neu angelegten Spalten nur bei Bedarf ausgeführt werden, also etwa mit
    PDF_DelCol13 = if List.NonNullCount(PDF_Komplett[Column13]) = 0 then 

Table.RemoveColumns(PDF_Komplett,"Column13") else ...,
Nur bekomme ich die Anweisungen nach "else" nicht korrekt hin.
Vielleicht gibt es ja auch eine einfache Möglichkeit, daß "Table.ExpandTableColumn" nur die wirklich vorhandenen Spalten zu importieren.
LG Bona
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Um die feste...
10.05.2025 19:59:37
Case
Moin Bona, :-)

... Anzahl an Spalten zu umgehen, kannst du erstmal alle Spalten holen: ;-)
AlleSpalten = List.Union(List.Transform(PDF_Tabellen[Data], each Table.ColumnNames(_)))

Dann prüfst du Column13 auf Existenz bzw. ob sie leer ist (Col13_Leer ist true, wenn entweder keine Column13 da ist oder sie in allen Tabellen leer ist): ;-)
Col13_Leer = 

if List.Contains(AlleSpalten, "Column13") then
List.NonNullCount(List.Combine(List.Transform(PDF_Tabellen[Data], each if Table.HasColumns(_, "Column13") then Table.Column(_, "Column13") else {}))) = 0
else
true

Anschließend kannst du je nach Ergebnis AlleSpalten anpassen: ;-)
AlleSpaltenFinal = 

if Col13_Leer then
List.RemoveItems(AlleSpalten, {"Column13"})
else
AlleSpalten

Dann expandieren: ;-)
PDF_Erweitert = Table.ExpandTableColumn(PDF_Tabellen, "Data", AlleSpaltenFinal)

Servus
Case
Anzeige
AW: Um die feste...
12.05.2025 15:12:15
Bona
Hallo Case,
danke für die Hilfe, es läuft.
Bona

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige