Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Compete to become Power BI Data Viz World Champion! First round ends August 18th. Get started.

Reply
sabd80
Helper III
Helper III

Import excel file if exists

Hi,
I import data from multiple folders in to Power BI, sometimes the file does not exists in some folders, how can handle error if the file does not exit, and import the file if it exists.

I have below code that check if the file exsists or not, but I don't know how to import the file if exists.

let
Path = "C:\Users\Desktop\Testing no files\Period2\data2.xlsx",
Result = try Binary.ToText(File.Contents(Path)),
Output =if Logical.From(Result[HasError]) then "not exist" else "exist"
in
Output

2 ACCEPTED SOLUTIONS
PhilipTreacy
Super User
Super User

Hi @sabd80 

 

You can use the try .. otherwise construct like so

 

 

let
    Path = "C:\Users\Desktop\Testing no files\Period2\data2.xlsx",
    FileCheck = try File.Contents(Path),
    Output = if FileCheck[HasError] then null else Excel.Workbook(FileCheck[Value])
in
    Output

 

 

 

try File.Contents(Path) – Tries to read the file.

 

if FileCheck[HasError] then null – If an error occurs (file not found), return null (or you can specify an alternate action).


else Excel.Workbook(FileCheck[Value]) – If the file exists, load it as an Excel workbook.


So if the file exists, Output will contain the Excel workbook's contents.  If the file does not exist, it will return null, preventing the code from crashing.

 

Phil



Did I answer your question? Then please mark my post as the solution.
If I helped you, click on the Thumbs Up to give Kudos.


Blog :: YouTube Channel :: Connect on Linkedin


Proud to be a Super User!


View solution in original post

Anonymous
Not applicable

Hi @sabd80 ,

PhilipTreacy provided a good suggestion, you can also try the methods in the following links to get it:

error handling - PowerBi - Powerquery: If Folder/File we are loading from a path doesn't exist, chan... 

let
    DefaultSource = Folder.Files("C:\DefaultPath"),
    TargetSource = Folder.Files("C:\TargetPath"),
    FileCounter = Table.RowCount(Source),
    DoSomething = if FileCounter > 0 then TargetSource else DefaultSource
in
    DoSomething

Solved: Error handling in loading files from folder - Microsoft Fabric Community

I found a solution for this and wanted to share it:

I created a function to handle the load of the individual Excel sheet. I then use this funtion in to individual queries. One to load the data from the files and one that will return the file name of the files that are unable to be processed by the funtion.

 

The function look like this:

(sourceFile as text) as table =>
let
    Source = Excel.Workbook(File.Contents(sourceFile), null, true),
    ExpandData = Table.ExpandTableColumn(
                Source, 
                "Data", 
                {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15"}, 
                {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15"}
            ),
    AddRowNumber = Table.AddIndexColumn(ExpandData, "Row", 0, 1),

    //Remove Rows with only Nulls
    AddColumnRowWithData = Table.AddColumn(AddRowNumber, "RowWithData", each 
                if [Column1] = null
                    and [Column2] = null
                    and [Column3] = null
                    and [Column4] = null
                    and [Column5] = null
                    and [Column6] = null
                    and [Column7] = null
                    and [Column8] = null
                    and [Column9] = null
                    and [Column10] = null
                    and [Column11] = null
                    and [Column12] = null
                    and [Column13] = null
                    and [Column14] = null
                    and [Column15] = null
                then "Empty Row"
                else "Row with data"
            ),
    RemoveRowsWithNoData = Table.SelectRows(AddColumnRowWithData, each ([RowWithData] = "Row with data")),
    RemoveColomnRowWithData = Table.RemoveColumns(RemoveRowsWithNoData, {"RowWithData"}),

    //Remove Columns with No Name
    TransposeTable = Table.Transpose(RemoveColomnRowWithData),
    RemoveColumnsWithNoName = Table.SelectRows(TransposeTable , each ([Column1] <> null)),
    TransposeTable2 = Table.Transpose(RemoveColumnsWithNoName),

    PromoteHeaders = Table.PromoteHeaders(TransposeTable2, [PromoteAllScalars=true]),
    RenameColumn = Table.RenameColumns(PromoteHeaders,{{"0", "Row"}})

in
    RenameColumn

 

The code for returning a list of files with errors:

let
    FilePath = fnGetParameter("File Path"),
    Source = Folder.Files(FilePath),
    RemoveOtherColumns = Table.SelectColumns( Source, {"Name", "Folder Path"}),
    CallFunction = Table.AddColumn(RemoveOtherColumns, "LoadAllFiles", each fnLoadFiles([Folder Path]&[Name])),
    KeepFilesWithErrors = Table.SelectRowsWithErrors(CallFunction, {"LoadAllFiles"}),
    RemoveColumns = Table.RemoveColumns(KeepFilesWithErrors ,{"Folder Path", "LoadAllFiles"})
in
    RemoveColumns 

Best Regards

View solution in original post

2 REPLIES 2
Anonymous
Not applicable

Hi @sabd80 ,

PhilipTreacy provided a good suggestion, you can also try the methods in the following links to get it:

error handling - PowerBi - Powerquery: If Folder/File we are loading from a path doesn't exist, chan... 

let
    DefaultSource = Folder.Files("C:\DefaultPath"),
    TargetSource = Folder.Files("C:\TargetPath"),
    FileCounter = Table.RowCount(Source),
    DoSomething = if FileCounter > 0 then TargetSource else DefaultSource
in
    DoSomething

Solved: Error handling in loading files from folder - Microsoft Fabric Community

I found a solution for this and wanted to share it:

I created a function to handle the load of the individual Excel sheet. I then use this funtion in to individual queries. One to load the data from the files and one that will return the file name of the files that are unable to be processed by the funtion.

 

The function look like this:

(sourceFile as text) as table =>
let
    Source = Excel.Workbook(File.Contents(sourceFile), null, true),
    ExpandData = Table.ExpandTableColumn(
                Source, 
                "Data", 
                {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15"}, 
                {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15"}
            ),
    AddRowNumber = Table.AddIndexColumn(ExpandData, "Row", 0, 1),

    //Remove Rows with only Nulls
    AddColumnRowWithData = Table.AddColumn(AddRowNumber, "RowWithData", each 
                if [Column1] = null
                    and [Column2] = null
                    and [Column3] = null
                    and [Column4] = null
                    and [Column5] = null
                    and [Column6] = null
                    and [Column7] = null
                    and [Column8] = null
                    and [Column9] = null
                    and [Column10] = null
                    and [Column11] = null
                    and [Column12] = null
                    and [Column13] = null
                    and [Column14] = null
                    and [Column15] = null
                then "Empty Row"
                else "Row with data"
            ),
    RemoveRowsWithNoData = Table.SelectRows(AddColumnRowWithData, each ([RowWithData] = "Row with data")),
    RemoveColomnRowWithData = Table.RemoveColumns(RemoveRowsWithNoData, {"RowWithData"}),

    //Remove Columns with No Name
    TransposeTable = Table.Transpose(RemoveColomnRowWithData),
    RemoveColumnsWithNoName = Table.SelectRows(TransposeTable , each ([Column1] <> null)),
    TransposeTable2 = Table.Transpose(RemoveColumnsWithNoName),

    PromoteHeaders = Table.PromoteHeaders(TransposeTable2, [PromoteAllScalars=true]),
    RenameColumn = Table.RenameColumns(PromoteHeaders,{{"0", "Row"}})

in
    RenameColumn

 

The code for returning a list of files with errors:

let
    FilePath = fnGetParameter("File Path"),
    Source = Folder.Files(FilePath),
    RemoveOtherColumns = Table.SelectColumns( Source, {"Name", "Folder Path"}),
    CallFunction = Table.AddColumn(RemoveOtherColumns, "LoadAllFiles", each fnLoadFiles([Folder Path]&[Name])),
    KeepFilesWithErrors = Table.SelectRowsWithErrors(CallFunction, {"LoadAllFiles"}),
    RemoveColumns = Table.RemoveColumns(KeepFilesWithErrors ,{"Folder Path", "LoadAllFiles"})
in
    RemoveColumns 

Best Regards

PhilipTreacy
Super User
Super User

Hi @sabd80 

 

You can use the try .. otherwise construct like so

 

 

let
    Path = "C:\Users\Desktop\Testing no files\Period2\data2.xlsx",
    FileCheck = try File.Contents(Path),
    Output = if FileCheck[HasError] then null else Excel.Workbook(FileCheck[Value])
in
    Output

 

 

 

try File.Contents(Path) – Tries to read the file.

 

if FileCheck[HasError] then null – If an error occurs (file not found), return null (or you can specify an alternate action).


else Excel.Workbook(FileCheck[Value]) – If the file exists, load it as an Excel workbook.


So if the file exists, Output will contain the Excel workbook's contents.  If the file does not exist, it will return null, preventing the code from crashing.

 

Phil



Did I answer your question? Then please mark my post as the solution.
If I helped you, click on the Thumbs Up to give Kudos.


Blog :: YouTube Channel :: Connect on Linkedin


Proud to be a Super User!


Helpful resources

Announcements
August Power BI Update Carousel

Power BI Monthly Update - August 2025

Check out the August 2025 Power BI update to learn about new features.

August 2025 community update carousel

Fabric Community Update - August 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors