If you’ve ever tried converting an Excel report to PDF manually — downloading it, opening it, printing to PDF, re-uploading it — you already know how tedious that gets when you’re doing it repeatedly. The good news is you can automate the entire thing with Power Automate, and it takes about 10–15 minutes to set up.
In this tutorial, I’ll show you how to build a flow that automatically converts an Excel file to PDF the moment it’s uploaded to a SharePoint library. I’ll also cover what to do when the flow breaks (and it can), plus two more useful scenarios you might need.
Before You Start — Quick Checklist
Make sure you have these in place before building the flow. Missing any one of these is the most common reason the flow fails silently:
- A SharePoint Online site with at least one document library (source, where Excel files will be uploaded)
- A second SharePoint document library (destination, where the PDF will be saved)
- OneDrive for Business is set up on your account — the Convert file action uses OneDrive internally, even if you don’t store files there permanently
- A Power Automate license that includes the SharePoint and OneDrive connectors (both are standard/included in most Microsoft 365 plans)
- Your Excel file is .xls or .xlsx — macro-enabled .xlsm Files are not supported by the native converter
- Edit permissions on both the source and destination SharePoint libraries
For this example, I am using the default document library from the DMS – Quality & Compliance site.

Which Method Should You Use?
There are a few ways to convert Excel to PDF in Power Automate. Pick the one that matches your situation:
| Your Scenario | Best Approach |
|---|---|
| Convert when someone uploads a file to SharePoint | Automated flow with SharePoint trigger (this tutorial) |
| Convert and email the PDF automatically | Same flow, but swap the final step for an Outlook action |
| Convert on a schedule (e.g., every Monday morning) | Scheduled cloud flow with Recurrence trigger |
| Need pixel-perfect formatting preserved | Plumsail Documents connector (premium) |
| Files are consistently over 1MB | Re-create file in OneDrive before converting (see the troubleshooting section below) |
For most people reading this, the first option is what they need. That’s what I’ll walk through now.
How the Power Automate Flow Works (Overview)
Before we dive in, here’s the logic so you understand what each step is doing — not just how to click through it:
- Trigger — Flow watches a SharePoint folder for new files
- Get file content — Retrieves the actual file bytes
- Condition — Checks if the file is
.xlsor.xlsx(skips everything else) - Create file in OneDrive — Temporarily stores the Excel file in OneDrive (required for the Convert action)
- Convert file — Uses OneDrive’s built-in converter to generate the PDF
- Create file in SharePoint — Saves the PDF to your destination library
- Delete from SharePoint — Removes the original Excel file from the source library
- Delete from OneDrive — Cleans up the temporary file so OneDrive doesn’t fill up

The reason OneDrive is involved, even though we’re working with SharePoint, is that the Convert file action only exists in the OneDrive connector — there’s no native SharePoint-to-PDF conversion action. OneDrive is just acting as a middleman here.
Power Automate Excel to PDF
Now we will build the Power Automate flow step by step.
Step 1 — Create the Flow
- Go to make.powerautomate.com and sign in
- Click Create on the left menu
- Choose Automated cloud flow
- Give it a name like “Excel to PDF on SharePoint Upload”
- Search for and select the trigger “When a file is created (properties only)” under SharePoint
- Click Create

Why “properties only”? This trigger fires immediately when a file is detected, without waiting to load the full file content. It’s faster and lighter. We fetch the actual file content in the next step.
Step 2 — Configure the Trigger
In the trigger action:
- Site Address — Select your SharePoint site from the dropdown
- Library Name — Select the document library where users will upload Excel files
- Folder — Optionally set a specific subfolder path (e.g., /Excel Reports) to narrow the trigger scope

Step 3 — Get the File Content
Click + New step and search for “Get file content” under the SharePoint connector.
- Site Address — Same site as the trigger
- File Identifier — Click into the field and from the Dynamic content panel, select Identifier from the trigger’s output

This fetches the actual file bytes so we can work with them in the next steps.
Step 4 — Add a Condition to Filter Excel Files
You don’t want this flow firing for every file type uploaded to the library — only Excel files. Add a Condition action.
Click + New step → Search for Condition
Set the condition like this:
- Condition 1: File name with extension contains .xls
- Click + Add → Or
- Condition 2: File name with extension contains .xlsx
The File name with extension value comes from the trigger’s dynamic content.

Everything from here goes inside the If yes branch.
Step 5 — Create a Temporary File in OneDrive
Inside the If yes branch, click Add an action and search for Create file under the OneDrive for Business connector (not SharePoint — they share a similar name, so check the icon).
- Folder Path — Set to
/(root) or a temp folder like /PDF-Staging - File Name — Select the file name with extension from the trigger’s dynamic content
- File Content — Select File content from the Get file content action’s dynamic content

This creates a temporary copy of the Excel file in OneDrive so the converter can access it.
Step 6 — Convert the File to PDF
Add another action: Convert file under OneDrive for Business.
- File — Select Id from the Create file (OneDrive) action’s dynamic content
- Target type — Select PDF

That’s all this step needs. The output will be the PDF file content, which you’ll use in the next step.
From my experience: if you’re dealing with larger Excel files (over 1MB), I recommend adding a Delay action (set to 3–5 seconds) between the Create file in OneDrive step and this Convert step. Office Services needs a moment to register the file before it can convert it. Skipping this on bigger files causes the flow to fail silently on the convert step.
Step 7 — Save the PDF to SharePoint
Add another Create file action, this time under the SharePoint connector.
- Site Address — Your SharePoint site
- Folder Path — Your destination library path (e.g., /PDF Reports)
- File Name — From the Convert file dynamic content, select Name — then manually append
.pdfat the end of the expression if the filename doesn’t already include it. Use: concat(body(‘Convert_file’)?[‘name’], ‘.pdf’) - File Content — Select File content from the Convert file action

Step 8 — Delete the Original Excel File from SharePoint
This step removes the original uploaded Excel file from the source library after the PDF is created.
Add a Delete file action under the SharePoint connector.
- Site Address — Your source SharePoint site
- File Identifier — Select Identifier from the trigger’s dynamic content

Step 9 — Delete the Temporary OneDrive File
Add a final Delete file action under the OneDrive for Business connector.
- File — Select Id from the Create file (OneDrive) action’s dynamic content
This keeps OneDrive clean and prevents your staging folder from filling up over time.

Step 10 — Save and Test
- Click Save in the top-right corner
- Click Test → Manually → Run flow
- Now, go to your SharePoint source library and upload any .xlsx file

- Head back to the flow’s run history — you should see it trigger within a few seconds
- Check your destination SharePoint library — the PDF should be there, and the original Excel file should be gone from the source library

What the Power Automate Full Flow Looks Like
Here’s the complete sequence at a glance:
text[Trigger] When file is created (SharePoint)
↓
[Get file content] (SharePoint)
↓
[Condition] File name contains .xls OR .xlsx
↓ YES
[Create file] (OneDrive — temp staging)
↓
[Delay] 3–5 seconds (recommended for files >500KB)
↓
[Convert file → PDF] (OneDrive)
↓
[Create file] (SharePoint — destination library)
↓
[Delete file] (SharePoint — remove original Excel)
↓
[Delete file] (OneDrive — remove temp file)

Troubleshooting: When the Power Automate Flow Fails
This is the section most tutorials skip, and it’s the one you’ll need most. Here are the errors I see most often with this flow:
Error 1: “File type unsupported” or “cannotOpenFile”
What it means: The OneDrive Convert file action couldn’t process the file. This is the most common error.
Common causes and fixes:
- The file is over 1MB — this seems to hit an undocumented threshold. Workaround: recreate the file in OneDrive using the file content before converting. Some users have also had success splitting large files before upload.
- OneDrive/Office Services is temporarily unavailable — add a Scope action around the Convert step with error handling, and set up a retry with a 10-second delay
- The file is .xlsm (macro-enabled) — the native converter doesn’t support this format. You’d need a third-party connector like Plumsail or Muhimbi for this
Error 2: “File identifier not found”
What it means: The flow can’t locate the file using the identifier you provided.
Fix: Double-check that the File identifier in the Get file content step is using the Identifier token from the trigger — not from any other action. This is an easy mix-up when you have multiple actions with similar dynamic content outputs.
Error 3: PDF saves with the wrong name (missing .pdf extension)
What it means: The Convert file action returns a filename without the .pdf extension in some environments.
Fix: Manually construct the filename in the final SharePoint Create file step using:
concat(triggerOutputs()?['body/{FileName}'], '.pdf')This forces the correct extension regardless of what the Convert action returns.
Error 4: Flow triggers but no PDF appears in destination
Checklist:
- Is the If yes condition actually matching? Check whether the condition value is .xls vs xls — the dot matters
- Is the destination folder path correct? Try using the folder picker instead of typing the path manually
- Did the Delete steps run before the Create file completed? Add a Delay before the Delete SharePoint step, just in case
Error 5: Flow worked before but suddenly stopped
I’ve seen this happen when Microsoft updates the OneDrive connector. The Convert file action is occasionally impacted by Office Online service updates.
Fix: Check the Power Platform admin center for any service advisories. If the action is returning a 500 InternalServerError, it’s usually a transient Microsoft-side issue — wait 30 minutes and try again. If it persists for more than 24 hours, raise a support ticket.
Scenario 2: Power Automate Convert Excel to PDF and Email It
If you want to email the PDF instead of (or in addition to) saving it to SharePoint, just swap Step 7 with an Outlook — Send an email (V2) action:
- To — Recipient’s email
- Subject — Something like
PDF Report: {FileName} - Attachments Name —
concat(triggerOutputs()?['body/{FileName}'], '.pdf') - Attachments Content —
File contentfrom the Convert file action
You can keep Steps 8 and 9 to still clean up the original Excel and the OneDrive temp file.
This is useful for automated report distribution — finance teams love it for weekly Excel reports that need to go out as PDFs without anyone touching them manually.
Scenario 3: Scheduled Batch Conversion in Power Automate
If you don’t want to trigger the flow on every upload but instead want to process a folder of Excel files every Monday morning, use a Scheduled cloud flow instead.
- Create a new Scheduled cloud flow with a Recurrence trigger (set to weekly, every Monday at 8:00 AM)
- Add a Get files (properties only) action for your SharePoint library
- Add an Apply to each loop
- Inside the loop, replicate Steps 3–9 from the main tutorial above
This is cleaner for batch processing scenarios where dozens of Excel files are dropped into a folder at once.
My Experience With This Flow in Production
I’ve built this flow (or some version of it) for several clients — finance teams automating report distribution, HR departments archiving form submissions as PDFs, operations teams converting Excel trackers to read-only PDF snapshots.
The most important thing I tell everyone: always add the Delay action before the Convert step when dealing with real-world file sizes. In a demo environment with a tiny test file, the flow runs perfectly without it. In production with a properly formatted Excel report that has data, charts, and formatting, it will fail on you about 30% of the time without the delay. Three to five seconds is usually enough.
Also, don’t skip the OneDrive cleanup step. I’ve seen staging folders hit thousands of files within a few months when teams forgot to add the delete step. It won’t break anything immediately, but it creates a mess, and OneDrive storage will creep up quietly.
Related Power Automate articles:
- Restore Deleted Flow in Power Automate
- Update Multiple Rows in Dataverse Using Power Automate
- Add Row to Excel Table Using Power Automate
- Delete all rows in Excel using Power Automate
- Delete All Items in the SharePoint List Using Power Automate
- Delete all rows from a SharePoint Online list using Power Automate
Frequently Asked Questions
Can I convert Excel to PDF in Power Automate without using OneDrive?
Not natively. The Convert file action only exists in the OneDrive connector. You can use a third-party connector like Plumsail Documents, Muhimbi, or Nutrient if you need to avoid OneDrive entirely.
Does this work with Excel files that have multiple sheets?
Yes — all sheets will be included in the PDF by default. You can’t select a specific sheet for conversion using the native OneDrive Convert action. If you need single-sheet conversion, you’ll need a premium connector like Plumsail, which gives you that level of control.
Will charts and conditional formatting in Excel show correctly in the PDF?
Generally, yes for standard charts. However, complex conditional formatting, custom fonts not installed on the Office Online server, and certain embedded objects may not render exactly as they look on your desktop. Always test with your specific template before going live.
Is there a file size limit for the Convert file action?
Microsoft doesn’t publish an official limit, but in practice, files over 1MB can fail with a “File type unsupported” error. Community reports suggest the threshold may be around 1–2MB. For larger files, try recreating the file in OneDrive before converting, or switch to a third-party connector.
What happens if someone uploads a non-Excel file to the library?
The Condition action we added in Step 4 handles this — if the file doesn’t contain .xls or .xlsx in the name, the flow goes down the If no branch. By default, that branch does nothing, which is fine. You can optionally add a notification action there if you want to alert the uploader.
Can I keep the original Excel file after conversion instead of deleting it?
Yes — just remove Steps 8 (Delete from SharePoint). The deletion step is optional. I included it in the main flow because the original request was to replace Excel files with PDFs, but it’s entirely up to your use case.
Does this work with the free version of Power Automate?
The SharePoint and OneDrive connectors are standard connectors, so they’re included in most Microsoft 365 subscriptions. You don’t need a premium Power Automate license for this specific flow.

After working for more than 18 years in Microsoft technologies like SharePoint, Microsoft 365, and Power Platform (Power Apps, Power Automate, and Power BI), I thought will share my SharePoint expertise knowledge with the world. Our audiences are from the United States, Canada, the United Kingdom, Australia, New Zealand, etc. For my expertise knowledge and SharePoint tutorials, Microsoft has been awarded a Microsoft SharePoint MVP (12 times). I have also worked in companies like HP, TCS, KPIT, etc.