Forum Discussion

Leebecker's avatar
Leebecker
New Member
4 years ago
Solved

Get all column headings for all sheets

Hello,   I am trying to find a way to get all the column headings (or all the values in a particular row) for all the sheets in a spreadsheet.  It seems like a fairly simple thing to do, but I can'...
  • mahoneypat's avatar
    4 years ago

    Here is a function that gets the values in Row 1 for all sheets in a workbook.  You can adapt it as needed.  Create a blank query, open the advanced editor and replace the code there with this.  That will create the function you can use in another query that shows 1+ excel file.  On the Add Column tab, click on Invoke Custom Function and point this function at the Content column.

     

     

     

    // let
    //     Source = File.Contents("C:\Test\GetHeaders.xlsx"),
    
    (filecontent) => let Source = filecontent,
        OpenExcel = Excel.Workbook(Source, null, true),
        #"Filtered Rows" = Table.SelectRows(OpenExcel, each ([Kind] = "Sheet")),
        #"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows",{"Name", "Data"}),
        #"Added Custom" = Table.AddColumn(#"Removed Other Columns", "Headers", each Record.ToList([Data]{0})),
        #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Data"}),
        #"Expanded Custom" = Table.ExpandListColumn(#"Removed Columns", "Headers"),
        #"Changed Type" = Table.TransformColumnTypes(#"Expanded Custom",{{"Headers", type text}})
    in
        #"Changed Type"

    The top lines with // are commented out.  You can comment out the //(filecontent) line and uncomment those to adapt it.

     

    Pat