Forum Discussion

moritz0815's avatar
moritz0815
Regular Visitor
4 years ago
Solved

Looping through multiple PDFs. One makes Problems.

Hello dear community,   I am new to using Power Query and unfortunately I have encountered a problem that is unsolvable for me right now. My scenario: I have about 15 PDF files, each containing a ...
  • KT_Bsmart2gethe's avatar
    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