Excel & CSV Merger: Consolidate, Pivot & Batch Convert
Pricing
from $20.00 / 1,000 processed files
Excel & CSV Merger: Consolidate, Pivot & Batch Convert
Combine, pivot, and batch convert, rename, or format many Excel and CSV files in one run.
Pricing
from $20.00 / 1,000 processed files
Rating
0.0
(0)
Developer
DWS Build
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Security
Limited permissionsShare
DWS Spreadsheet Premium
Combine, pivot, and batch-process Excel and CSV files in one run. Point it at up to 50 files by URL and get back download links for the results.
- Consolidate many files or sheets into one table, either stacked (rows appended, columns lined up by header name) or merged side by side on a key column.
- Pivot across every input sheet: group by one or more columns and get sum, count, mean, min, and max.
- Convert, rename columns, and format every file in a batch: xlsx, csv, or json out; one rename map for all files; bold and frozen header, auto column width, and number or date formats per column.
Reads .xlsx, .xlsm, .xls, and .csv. Writes .xlsx, .csv, or .json.
How to give it files
The Actor runs in the cloud, so it cannot read files on your computer. Give it files in one of two ways:
- URLs (recommended). Any direct-download http(s) link: S3 or other signed links, an Apify key-value store record, a Dropbox link ending in
?dl=1, or a Google Drive direct-download link. A share page that shows the file in a browser is not a download link; the Actor will tell you if it gets a web page instead of a spreadsheet. - Base64 for small API calls:
{"base64": "...", "name": "jan.csv"}. A name with the file extension is required.
Limits
- 30 MB per file and 30 MB per run in total (all files together), and up to 50 files per run. Base64 input is limited to 5 MB per file and 10 MB per run. The caps keep runs fast and cheap. For a bigger job, split the files over several runs.
- The first row of each sheet is the header row.
- Output keeps cell values only. Where a cell had a formula, you get its last computed value, not the formula. Original styles, merged cells and charts are not preserved.
- CSV output adds a leading apostrophe to text that starts with
=,+,-, or@(when it is not a number), so the text cannot run as a formula when the file is opened in a spreadsheet app.
Example inputs
These examples use the sample files in eschaq/dws-spreadsheet-samples, so you can paste one into the input, click Start, and see it work. Then replace the URLs with your own files.
Consolidate: stack regional or monthly exports into one sheet
{"operation": "consolidate","files": [{ "url": "https://raw.githubusercontent.com/eschaq/dws-spreadsheet-samples/main/north.csv" },{ "url": "https://raw.githubusercontent.com/eschaq/dws-spreadsheet-samples/main/south.xlsx" },{ "url": "https://raw.githubusercontent.com/eschaq/dws-spreadsheet-samples/main/west.xls" }],"consolidate": { "strategy": "stack_rows", "addSourceColumn": true },"outputFormat": "xlsx"}
Columns are matched by name, ignoring case, extra spaces, and the difference between spaces, underscores and hyphens, so Cust ID and cust_id merge into one column. A _source column says which file and sheet each row came from. Columns that still look alike after that (CustID and Cust ID) are kept apart and listed in the warnings. To join files side by side on a key instead, use "strategy": "merge_on_key", "keyColumn": "SKU".
Pivot: revenue by region across every file
{"operation": "pivot","files": [{ "url": "https://raw.githubusercontent.com/eschaq/dws-spreadsheet-samples/main/sales.xlsx" },{ "url": "https://raw.githubusercontent.com/eschaq/dws-spreadsheet-samples/main/legacy.xls" },{ "url": "https://raw.githubusercontent.com/eschaq/dws-spreadsheet-samples/main/march.csv" }],"pivot": { "groupBy": ["Region"], "values": ["Revenue"], "aggregations": ["sum", "count", "mean"] },"outputFormat": "xlsx"}
Pivot reads every sheet of every input file by default. The optional sheets field limits it to the sheets you name in workbooks; CSV files are always included. Cells that are not numbers in a value column are skipped and counted in the warnings.
Batch: rename columns and format every file
{"operation": "format","files": [{ "url": "https://raw.githubusercontent.com/eschaq/dws-spreadsheet-samples/main/orders_1.csv" },{ "url": "https://raw.githubusercontent.com/eschaq/dws-spreadsheet-samples/main/orders_2.csv" },{ "url": "https://raw.githubusercontent.com/eschaq/dws-spreadsheet-samples/main/orders_3.csv" },{ "url": "https://raw.githubusercontent.com/eschaq/dws-spreadsheet-samples/main/orders_4.csv" },{ "url": "https://raw.githubusercontent.com/eschaq/dws-spreadsheet-samples/main/orders_5.csv" }],"renameColumns": { "Cust ID": "customer_id", "Order Date": "order_date" },"format": {"boldHeader": true,"freezeHeader": true,"autoWidth": true,"columnFormats": { "order_date": "yyyy-mm-dd", "Amount": "#,##0.00" }},"outputFormat": "xlsx"}
In convert, rename_columns, and format runs, a filled-in Rename columns map and a filled-in Format options block both apply: rename first, then format. That is still one file-processed charge per file. columnFormats uses the column names after renaming. Formatting needs xlsx output. In any xlsx output (convert, consolidate, pivot, and the batch operations), ISO dates stored as text become real date cells: 2026-01-05, with an optional time (2026-01-05 13:45:00), or the T form without a time zone (2026-01-05T13:45:00, fractional seconds allowed). Values with a time zone (Z or +02:00) stay text. Ambiguous dates such as 01/02/2026 stay text, and the warnings name the column.
Output
Each output file is saved to the run's key-value store. The run's dataset holds one short report:
{"operation": "consolidate","outputFormat": "xlsx","filesIn": 3, "filesLoaded": 3, "sheetsIn": 3, "rowsIn": 9, "rowsOut": 9,"outputs": [{ "key": "consolidated.xlsx", "url": "https://api.apify.com/v2/key-value-stores/.../records/consolidated.xlsx", "rows": 9 }],"warnings": [],"chargedEvents": { "consolidate-run": 1 },"stoppedAtChargeLimit": false}
The report never contains row data, only counts, up to 20 warnings, and download URLs. A file that cannot be downloaded or read is a warning; the other files are still processed.
Use it from Claude
Add Apify's hosted MCP server with this Actor as a tool:
https://mcp.apify.com?tools=dws_build/dws-spreadsheet-premium
Claude can then run it with file URLs and read the download links from the report. Files on your own computer need to be at a URL first (for example uploaded to cloud storage).
For single files on your own machine (reading, searching, filtering, writing cells), the free DWS Spreadsheet MCP runs locally and needs no upload.
Pricing
Pay per event:
| Event | When it is charged |
|---|---|
| Consolidate run | Once, after the combined file is saved |
| Pivot run | Once, after the pivot file is saved |
| File processed | Once per input file in convert, rename, or format runs, after that file's output is saved |
Nothing is charged for input errors, files that fail to download or parse, or work that did not finish. If a run reaches your charge limit, it stops before downloading the next file, reports what finished, and exits normally.