Skip to main content

Excel Separate Worksheets in Power Automate

What this action does

PDF4me Excel - Separate Worksheets splits a multi-sheet XLSX workbook into individual single-sheet workbooks inside a Power Automate flow. Map the source file from SharePoint, OneDrive, Dropbox, Dataverse, or Outlook attachments, and the action returns an outputDocuments array with one file per sheet (named after the sheet itself). Wrap a single Apply to each around it to fan out the writes to whatever destination you choose. The action is dynamic: it does not care whether the workbook has 2 sheets or 200.

Related Blog Posts(1)

Authenticating Your API Request

The PDF4me Connect connector in Power Automate requires a valid connection holding your PDF4me API key. Create the connection once at flow design time, then every PDF4me action in your tenant reuses it.

Important Facts You Should Not Miss

One workbook in, an array of workbooks out
The output sits on the outputDocuments array. Each element has its own File Name and File Content. Always loop the result with Apply to each; do not try to reference a single file directly because the count is dynamic.
Sheet names become file names
Each output file is named after its source sheet with a .xlsx extension. Sheet5 becomes Sheet5.xlsx. Custom names like Q1 2025 become Q1 2025.xlsx. Use that in Create file directly or transform it with a Compose step first.
Cross-sheet formulas break by design
Splitting separates sheets into independent workbooks, so any =Sheet2!A1 reference from Sheet1 loses its target. Intra-sheet formulas (everything that lives on the same sheet) are preserved. Plan ahead if your workbook chains values across sheets.
Excel - Separate Worksheets action in Power Automate. File Content is mapped from a previous Dropbox Get file content step. File Name is Separate.xlsx. Advanced parameters show Culture & Language Settings set to en-US.

Action configuration. File Content mapped from a Dropbox Get file content step, File Name Separate.xlsx, Culture & Language Settings en-US.

Parameters

Required: File Content. Recommended: File Name. Advanced: Culture & Language Settings (defaults to en-US).

ParameterRequiredWhat it doesExample
File ContentYesMulti-sheet XLSX workbook as binary dynamic content from a prior step (SharePoint Get file content, OneDrive Get file content, Dataverse Download file, Dropbox Get file content using path, Outlook Get attachments).@triggerOutputs()?['body']
File NameNoSource filename including .xlsx extension. Defaults to Separate.xlsx. Used for tracking and error messages.Separate.xlsx
Culture & Language SettingsNoStandard culture name controlling how locale-sensitive cell values are interpreted during the split. Defaults to en-US. Use fr-FR, de-DE, ja-JP, etc. when your sheet content uses non-US formats.en-US

Output

The action returns an array of files plus error fields. The Power Automate dynamic-content picker exposes these names:

Dynamic content picker for Excel - Separate Worksheets: File Name, File Content, Error Message, Error Details Item.

The dynamic content picker exposes File Name and File Content for each item in outputDocuments, plus Error Message / Error Details for failures.

Dynamic content fieldTypeWhat it contains
outputDocumentsArrayOne entry per source sheet. Loop with Apply to each.
File Name (item)StringSheet name plus .xlsx extension. Pass directly into Create file File Name.
File Content (item)BinaryThe single-sheet workbook. Pass directly into Create file File Content.
Error MessageStringShort error description on failure. Empty when the action succeeds.
Error Details ItemArrayItemised error messages when multiple issues were encountered. Empty when the action succeeds.

Raw response shape

For reference (or when calling the underlying REST endpoint directly), a 5-sheet split returns a body like this:

Raw HTTP response from Excel - Separate Worksheets. Status code 200, Content-Type application/json. The body contains an outputDocuments array with 5 entries (Sheet1.xlsx through Sheet5.xlsx), each carrying a streamFile Base64 string.

Status code 200, Content-Type application/json. outputDocuments carries one {fileName, streamFile} object per sheet.

Sample files

Flow examples

Common Power Automate flow patternsTypical ways to chain Excel - Separate Worksheets into a flow.
SharePoint upload to per-sheet library
  1. SharePoint When a file is created trigger fires on /Documents/InboundWorkbooks.
  2. SharePoint Get file content loads the XLSX binary.
  3. Excel - Separate Worksheets splits it into one file per sheet.
  4. Apply to each over outputDocuments → SharePoint Create file in /Documents/ByDepartment using the item File Name and File Content.
Email a workbook, get sheets back
  1. Outlook When a new email arrives triggers on a routing inbox with .xlsx attachments.
  2. Apply to each attachment → Excel - Separate Worksheets splits the workbook.
  3. Inner Apply to each over outputDocuments → Outlook Send an email with each sheet as a separate attachment.
Dataverse bulk export to OneDrive
  1. Recurrence trigger fires every Monday at 06:00.
  2. Dataverse generates the consolidated report as a single workbook.
  3. Excel - Separate Worksheets splits it by region or department.
  4. Apply to each → OneDrive Create file under /Reports/Weekly/[YYYY-MM-DD]/.

Frequently Asked Questions

What does Excel - Separate Worksheets return?+
An array called outputDocuments. Each item is an object with File Name (the sheet name plus .xlsx extension) and File Content (the binary single-sheet workbook). A 5-sheet input becomes a 5-element array with Sheet1.xlsx through Sheet5.xlsx.
Do I need to know the sheet count in advance?+
No. The action splits whatever sheets are present in the input workbook. Wrap the result in Apply to each over outputDocuments and the flow handles 2 sheets or 200 sheets without any code change.
Are sheet names preserved as file names?+
Yes. Each output file is named after the source sheet plus the .xlsx extension. Sheet5 becomes Sheet5.xlsx. Custom names like Q1 2025, Sales, Inventory become Q1 2025.xlsx, Sales.xlsx, Inventory.xlsx accordingly.
Does the split preserve formatting, formulas, and named ranges?+
Yes for content on the sheet being split. Each output file is a valid .xlsx with the original cell values, number formats, styles, and intra-sheet formulas. Cross-sheet references (=Sheet2!A1 from Sheet1) cannot survive the split because the referenced sheet is no longer in the same workbook.
Does it work with .xls (legacy Excel 97-2003)?+
The action targets .xlsx (OOXML). Convert .xls files to .xlsx upstream if needed. Saving the file from Excel into the new format is the simplest path.
How do I rename the output files (e.g. add a date prefix)?+
Inside the Apply to each, build the new name with a Compose or expression step before Create file: concat(formatDateTime(utcNow(),'yyyy-MM-dd'),'_',item()?['fileName']) gives you 2026-06-02_Sheet1.xlsx style names.
What does Culture & Language Settings change?+
It tells the engine how to interpret locale-sensitive cell content (decimal separator, date order) during the split. The default en-US is correct for US-style 1,234.56 and MM/dd/yyyy. Switch to fr-FR, de-DE, etc. when your sheets follow other conventions.
Does this work in Power Automate Desktop?+
PDF4me Connect is a cloud connector available in Power Automate (the web flow designer). For Power Automate Desktop, call the same Separate Worksheets REST endpoint with the HTTP action.

Get Help