Power Automate Desktop パワー クエリ

In Power Automate Desktop there are two ways to read an Excel file. The traditional way is to use built-in Excel actions extract all of the spreadsheet’s data. A better way is to create a SQL connection to the Excel file and use SQL queries to get the data we need. SQL queries are twice as fast at reading data from an Excel file and we can write them to filter the data and only return a subset of what we need.

In this article I will show you how to get data from an Excel file using both methods and how to filter Excel data with a SQL query.

Table Of Contents:
• Introduction: The Employees List Excel File
• Create An Employees List Excel File
• Read Excel File Data Using A SQL Connection
• Read Excel File Data Using Excel Actions
• Testing The Speed of SQL Connection vs. Excel Actions To Read An Excel File
• Selecting Specific Excel File Rows With SQL Statements
• Filter An Excel File Where A Column Is Equals A Specific Value
• Filter An Excel File For Values Greater Than A Specific Number
• Filter An Excel File For Values Between Two Dates
• Filter An Excel File To Return Top Rows

Introduction: The Employees List Excel File

The human resources department of a financial services firm has a list of employees and other important details stored in an Excel spreadsheet. They want to use Power Automate Desktop to extract information from the Excel file and input it into their payroll system.

Power Automate Desktop パワー クエリ

Create An Employees List Excel File

For this tutorial we need an Excel spreadsheet with employee information. Open Excel and type in some sample data as shown in the screenshot above. When saving the spreadsheet make a note of the filename and folder path where it is stored. The path to my spreadsheet is:

C:\RPA\ReadExcelUsingSQL\EmployeesList.xlsx

Read Excel File Data Using A SQL Connection

There are two ways to open an Excel file in Power Automate Desktop. First we will open the Excel file and read its data using a SQL connection. Then we will open it the traditional way using Excel actions and read the data. After trying both methods we will compare them to one another.

Open Power Automate Desktop and create a new desktop flow.

Power Automate Desktop パワー クエリ
Power Automate Desktop パワー クエリ

Then insert an Open SQL Connection action.

Power Automate Desktop パワー クエリ

Then write this code in the connection string field. A connection string specifies information about a datasource and tells Power Automate how to connect to it. Notice that the Source parameter includes a reference to Excel_File_Path variable.

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%Excel_File_Path%;Extended Properties="Excel 12.0 Xml;HDR=YES";

Now we will write a SQL query to extract data from the Excel spreadsheet. Create an Execute SQL statement step as shown below.

Power Automate Desktop パワー クエリ

Then write this code in the SQL statement field. This query says to get all of the columns in from the spreadsheet named Sheet1.

SELECT * 
FROM [Sheet1$]

We must add one more action to close the SQL connection once the query is completed.

Power Automate Desktop パワー クエリ

The full set of actions to open the Excel file with a SQL connection should look like this.

Power Automate Desktop パワー クエリ

When we run the desktop flow it returns a variable called QueryResult with the full contents of the Excel spreadsheet.

Power Automate Desktop パワー クエリ

Read Excel File Data Using Excel Actions

The normal way to read an Excel file is by using the Excel actions in Power Automate Desktop. Let’s give this method a try so we can see compare it the SQL connection option.

Insert a new Launch Excel desktop flow action.

Power Automate Desktop パワー クエリ

Choose to launch Excel and open the following document at the document path stored in our variable.

%Excel_File_Path%

Then add a Read from Excel worksheet action. Use the Excel instance created by the Launch Excel action and retrieve all available values from the worksheet.

Power Automate Desktop パワー クエリ

Finally, close the Excel file.

Power Automate Desktop パワー クエリ

The completed desktop flow should look like this.

Power Automate Desktop パワー クエリ

Run the flow and then look at the QueryResult variable. It contains exactly the same values.

Power Automate Desktop パワー クエリ

Testing The Speed of SQL Connection vs. Excel Actions To Read An Excel File

Both methods of reading an Excel file return the exact same values. So why is it better to use a SQL Connection as opposed the Excel actions. One advantage is speed. A SQL Connection can read data from an Excel file twice as fast.

The following desktop flow performs both options and uses the get current date and time action to track when they started and ended. The subtract dates action determines how many seconds are between the start and end times and then the result is displayed in a message box.

Power Automate Desktop パワー クエリ

When we run the desktop flow we can see the SQL connection is twice as faster at reading an Excel file as the traditional Excel actions.

Power Automate Desktop パワー クエリ

Selecting Specific Excel File Rows With SQL Statements

An even greater advantage of using a SQL connection to read data from an Excel file is we can use SQL statements to obtain a filtered set of rows. If you want to learn how to write SQL queries I suggest using the awesome SQL reference guide on the W3 Schools website. I’ll also give a few examples to get us started.

Filter An Excel File Where A Column Is Equals A Specific Value

Suppose we wanted to only wanted to extract the employees who live in the US state of New York (abbreviation: NY).

Power Automate Desktop パワー クエリ

Write this query in the SQL statement field. Notice that we’ve added a WHERE clause to our SQL statement. The WHERE clause allows us to test each row for a specified condition. In this example the us_state column must equal the text NY.

SELECT * 
FROM [Sheet1$]
WHERE [us_state] = 'NY'

After the desktop flow is run we check the QueryResult variable and see it shows only employees from New York (NY).

Power Automate Desktop パワー クエリ

Filter An Excel File For Values Greater Than A Specific Number

Next, let’s try to only get the employees whose annual salary is over $80,000.

Power Automate Desktop パワー クエリ

Write this query in the SQL statement field. Notice that we use the greater than symbol to compare the annual_salary field to a number. We also use the ORDER BY clause to sort the query results from the highest salary to the lowest salary.

SELECT * 
FROM [Sheet1$]
WHERE [annual_salary] > 80000
ORDER BY annual_salary desc

When we run the desktop flow our QueryResult variable looks like this.

Power Automate Desktop パワー クエリ

Filter An Excel File For Values Between Two Dates

This example is one I have come back to many times. We can use a SQL query to return only the results between two dates. In this one I want to get only the employees hired during the year 2020.

Power Automate Desktop パワー クエリ

Write this code in the SQL statement field. We can use the BETWEEN operator to specific two dates for comparison. Notice how dates must be written within two # symbols.

SELECT * 
FROM [Sheet1$]
WHERE [hire_date] BETWEEN #1/1/2020# AND #12/31/2020# 

Once again, run the desktop flow and open the QueryResult variable and it will only show employees with hire dates in the year 2020.

Power Automate Desktop パワー クエリ

Filter An Excel File To Return Top Rows

This final examples shows how to get only the top 3 rows in an Excel spreadsheet.

Power Automate Desktop パワー クエリ

Write this code in the SQL statement field. The SELECT TOP clause can be changed to increase or decrease the number of rows returned.

SELECT TOP 3 *
FROM [Sheet1$]

Run the desktop flow and check the QueryResult variable to confirm only 3 values are returned.

Power Automate Desktop パワー クエリ

Did You Enjoy This Article? 😺

Subscribe to get new Power Automate For Desktop articles sent to your inbox each week for FREE

Questions?

If you have any questions about Power Automate Desktop: Read & Filter Excel With SQL Query please leave a message in the comments section below. You can post using your email address and are not required to create an account to join the discussion.