It's a CSV file wearing an Excel costume
Excel opens the download without complaint. That does not make it an .xlsx file.
This converter builds a comma-separated table from your XML and hands it back as a .csv file. Double-click it and Excel, Google Sheets, or Numbers open it into a normal-looking grid, because every spreadsheet program on the market reads CSV natively. What you do not get is a real workbook: no sheet tabs, no cell formatting, no formulas, no column types. If a script further down your pipeline checks for the .xlsx signature or expects multiple worksheets, this output fails that check even though it opened fine on your screen.
The JSON to Excel converter in our JSON tools writes an actual binary .xlsx workbook using the SheetJS library. This page does not do that yet. If your workflow genuinely needs a native workbook rather than a CSV that looks like one, convert your XML to JSON first with the XML to JSON converter, then run that output through JSON to Excel.
How the tool decides what becomes a row
The parser looks at your root element's direct children first. Find one wrapper, like a single <employees> tag holding many <employee> tags, and each <employee> becomes a row. Skip the wrapper and repeat tags directly under the root, and those repeated tags become the rows instead. Either shape works without extra configuration.
Take a three-employee export. An <employee> element with <name>, <department>, and <salary> children turns into one row with three columns, named after those child tags. A second <employee> with the same three children lines up under the same headers automatically. A third <employee> missing <salary> simply leaves that cell blank rather than shifting every column left, since headers are collected across all rows before the table gets built.
Column order follows first appearance, not alphabetical order. The first row to introduce a tag decides where that column sits for every row after it.
Where this earns a permanent bookmark
- Auditing an API response. An endpoint hands back XML instead of JSON, and you need to eyeball twenty records in a spreadsheet before deciding whether the integration is worth building.
- Turning a product feed into a report. A supplier sends a catalog as XML. Marketing wants pricing and stock counts in a sheet by lunchtime, not a data pipeline.
- Spot-checking SOAP or legacy exports. Older systems still answer in XML. Pull ten sample records out of a response and confirm field values line up before writing a full parser against it.
What won't survive the round trip
Three specific things break here, and each one is worth knowing before you rely on the output.
- Repeated sibling tags collide. If one row element contains two <phone> tags, for a home number and a work number, only the second one survives. Columns are named after the tag, not its position, so a repeat overwrites the first value instead of adding a second column.
- Attributes and child tags share one namespace. Turn on the Attributes option and an attribute named
idwrites to the same column as a child element named <id>, if both exist on the same row. Whichever gets processed second wins. - Mixed content loses structure. An element holding both text and nested tags, like <note>Called <customer>Jane</customer> twice</note>, keeps the nested tag's value and drops the surrounding text.
Turn Flatten off before feeding it a deep export
With Flatten on, the converter walks every descendant of a row element and pulls in every leaf value it finds, however many levels down. On a shallow feed like the sample above, that is exactly what you want. On a deeply nested export, an order with line items, each line item with tax breakdowns, each breakdown with regional codes, it can produce far more columns than you expected, some pulled from data three or four levels removed from the row itself.
Switch Flatten off and the tool reads only a row's direct children, skipping anything nested deeper than one level. Fewer columns, easier to scan, and no surprise data from a branch you did not know existed.
CSV now, or a real workbook later?
Three ways to get XML data into Excel, and none of them is wrong, they just answer different questions.
| Method | Output | Best for |
|---|---|---|
| This converter | CSV, opens in Excel | A quick look at flat or lightly nested XML |
| XML to JSON, then JSON to Excel | Real .xlsx workbook | Deliverables that need a genuine workbook file |
| Excel's built-in Get Data > From XML | Native worksheet, refreshable | Recurring imports from the same XML source |
We built this page for the first case, a fast, no-install look at XML data. If you are past the spot-check stage and building something recurring, Excel's own XML import handles refresh cycles better than any browser tool will.
