Forum Discussion
Looping through multiple PDFs. One makes Problems.
- 4 years ago
Hi moritz0815 ,
Let's start from scratch by modifying your existing code. We need to create to custom functions, 22 columns and 11 columns.
Once we have the two functions, follow the steps below:
1.
2.
3. Filter for page only
4. Add a custom column
5. Combine tables by right-click on the column header and select drill down.
6. Update the formula in the formula bar by adding Table.Combine(defaultCode[columnName])
Please see below code for the two custom functions:
Copy and paste each of them to blank query and the queries to fx22Columns and fx11Columns.
//fx22Columns
(FilePath as text, PageID as text)=>
let
Quelle = Pdf.Tables(File.Contents(FilePath), [Implementation="1.3"]),
Page1 = Quelle{[Id=PageID]}[Data],
#"Höher gestufte Header" = Table.PromoteHeaders(
Page1, [PromoteAllScalars=true]),
#"Geänderter Typ" = Table.TransformColumnTypes(
#"Höher gestufte Header",
List.Transform(
Table.ColumnNames(#"Höher gestufte Header"
),
each {_, type text}
)
),
#"Zusammengeführte Spalten22_1" = Table.CombineColumns(
#"Geänderter Typ",
{"Column2", "Column3", "Column4"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"11/1"
),
#"Zusammengeführte Spalten22_2" = Table.CombineColumns(
#"Zusammengeführte Spalten22_1",
{"Column5", "Column6", "Column7"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"11/2"
),
#"Zusammengeführte Spalten22_3" = Table.CombineColumns(
#"Zusammengeführte Spalten22_2",
{"Column8", "Column9", "Column10"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"12/1"
),
#"Zusammengeführte Spalten22_4" = Table.CombineColumns(
#"Zusammengeführte Spalten22_3",
{"Column11", "Column12", "Column13"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"12/2"
),
#"Zusammengeführte Spalten22_5" = Table.CombineColumns(
#"Zusammengeführte Spalten22_4",
{"Column14", "Column15", "Column16"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Punkte-AP"
),
#"Zusammengeführte Spalten22_6" = Table.CombineColumns(
#"Zusammengeführte Spalten22_5",
{"Column17", "Column18", "Column19"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Gesamtergebnis"
),
#"Zusammengeführte Spalten22_7" = Table.CombineColumns(
#"Zusammengeführte Spalten22_6",
{"Column20", "Column21", "Column22"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Note"
),
#"Entfernte untere Zeilen" = Table.RemoveLastN(
#"Zusammengeführte Spalten22_7",
5
),
#"Umbenannte Spalten" = Table.RenameColumns(
#"Entfernte untere Zeilen",
{
{"Bericht Leistungsstand für Fachhochschulreife",
"Fächer und Infos"}
}
)
in
#"Zusammengeführte Spalten22_7"
//fx11Columns
(PageID as text)=>
let
Quelle = Pdf.Tables(File.Contents("C:\Speicher ohne Upload\F12Ib.pdf"), [Implementation="1.3"]),
Page1 = Quelle{[Id="Page010"]}[Data],
#"Höher gestufte Header" = Table.PromoteHeaders(Page1, [PromoteAllScalars=true]),
#"Geänderter Typ" = Table.TransformColumnTypes(
#"Höher gestufte Header",
List.Transform(
Table.ColumnNames(#"Höher gestufte Header"
),
each {_, type text}
)
),
#"Zusammengeführte Spalten" = Table.CombineColumns(
#"Geänderter Typ",
{"Column1", "Bericht Leistungsstand für Fachhochschulreife"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Bericht Leistungsstand für Hochschulreife"
),
#"Zusammengeführte Spalten1" = Table.CombineColumns(
#"Zusammengeführte Spalten",
{"Column3", "Column4"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"11/1"
),
#"Umbenannte Spalten" = Table.RenameColumns(
#"Zusammengeführte Spalten1",
{
{"Column5", "11/2"}
}
),
#"Zusammengeführte Spalten2" = Table.CombineColumns(
#"Umbenannte Spalten",
{"Column6", "Column7"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"12/1"
),
#"Umbenannte Spalten1" = Table.RenameColumns(
#"Zusammengeführte Spalten2",
{
{"Column8", "12/2"}, {"Column9", "Punkte-AP"}, {"Column10", "Gesamtergebnis"}, {"Column11", "Note"}
}
)
in
#"Umbenannte Spalten1"Let me know how you go.
Regards
KT
Hi moritz0815 ,
Let's start from scratch by modifying your existing code. We need to create to custom functions, 22 columns and 11 columns.
Once we have the two functions, follow the steps below:
1.
2.
3. Filter for page only
4. Add a custom column
5. Combine tables by right-click on the column header and select drill down.
6. Update the formula in the formula bar by adding Table.Combine(defaultCode[columnName])
Please see below code for the two custom functions:
Copy and paste each of them to blank query and the queries to fx22Columns and fx11Columns.
//fx22Columns
(FilePath as text, PageID as text)=>
let
Quelle = Pdf.Tables(File.Contents(FilePath), [Implementation="1.3"]),
Page1 = Quelle{[Id=PageID]}[Data],
#"Höher gestufte Header" = Table.PromoteHeaders(
Page1, [PromoteAllScalars=true]),
#"Geänderter Typ" = Table.TransformColumnTypes(
#"Höher gestufte Header",
List.Transform(
Table.ColumnNames(#"Höher gestufte Header"
),
each {_, type text}
)
),
#"Zusammengeführte Spalten22_1" = Table.CombineColumns(
#"Geänderter Typ",
{"Column2", "Column3", "Column4"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"11/1"
),
#"Zusammengeführte Spalten22_2" = Table.CombineColumns(
#"Zusammengeführte Spalten22_1",
{"Column5", "Column6", "Column7"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"11/2"
),
#"Zusammengeführte Spalten22_3" = Table.CombineColumns(
#"Zusammengeführte Spalten22_2",
{"Column8", "Column9", "Column10"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"12/1"
),
#"Zusammengeführte Spalten22_4" = Table.CombineColumns(
#"Zusammengeführte Spalten22_3",
{"Column11", "Column12", "Column13"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"12/2"
),
#"Zusammengeführte Spalten22_5" = Table.CombineColumns(
#"Zusammengeführte Spalten22_4",
{"Column14", "Column15", "Column16"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Punkte-AP"
),
#"Zusammengeführte Spalten22_6" = Table.CombineColumns(
#"Zusammengeführte Spalten22_5",
{"Column17", "Column18", "Column19"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Gesamtergebnis"
),
#"Zusammengeführte Spalten22_7" = Table.CombineColumns(
#"Zusammengeführte Spalten22_6",
{"Column20", "Column21", "Column22"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Note"
),
#"Entfernte untere Zeilen" = Table.RemoveLastN(
#"Zusammengeführte Spalten22_7",
5
),
#"Umbenannte Spalten" = Table.RenameColumns(
#"Entfernte untere Zeilen",
{
{"Bericht Leistungsstand für Fachhochschulreife",
"Fächer und Infos"}
}
)
in
#"Zusammengeführte Spalten22_7"
//fx11Columns
(PageID as text)=>
let
Quelle = Pdf.Tables(File.Contents("C:\Speicher ohne Upload\F12Ib.pdf"), [Implementation="1.3"]),
Page1 = Quelle{[Id="Page010"]}[Data],
#"Höher gestufte Header" = Table.PromoteHeaders(Page1, [PromoteAllScalars=true]),
#"Geänderter Typ" = Table.TransformColumnTypes(
#"Höher gestufte Header",
List.Transform(
Table.ColumnNames(#"Höher gestufte Header"
),
each {_, type text}
)
),
#"Zusammengeführte Spalten" = Table.CombineColumns(
#"Geänderter Typ",
{"Column1", "Bericht Leistungsstand für Fachhochschulreife"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Bericht Leistungsstand für Hochschulreife"
),
#"Zusammengeführte Spalten1" = Table.CombineColumns(
#"Zusammengeführte Spalten",
{"Column3", "Column4"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"11/1"
),
#"Umbenannte Spalten" = Table.RenameColumns(
#"Zusammengeführte Spalten1",
{
{"Column5", "11/2"}
}
),
#"Zusammengeführte Spalten2" = Table.CombineColumns(
#"Umbenannte Spalten",
{"Column6", "Column7"},
Combiner.CombineTextByDelimiter("", QuoteStyle.None),"12/1"
),
#"Umbenannte Spalten1" = Table.RenameColumns(
#"Zusammengeführte Spalten2",
{
{"Column8", "12/2"}, {"Column9", "Punkte-AP"}, {"Column10", "Gesamtergebnis"}, {"Column11", "Note"}
}
)
in
#"Umbenannte Spalten1"
Let me know how you go.
Regards
KT
Wow! Great Tor habe you!
I will go step by step tomorrow. I will let you know.
- moritz08154 years agoRegular Visitor
Thanks a million for your effort and the extremely helpful tutorial and good tips.
I had to make a few adjustments and got it working. I have also learned a lot.