Skip to content

Excel XLSX to XML converter

XLSX to XML writes row-oriented XML from worksheet cells, so the output is data XML and not an Office Open XML workbook package.

  • Converted with Table engine · nothing stored
  • Free: 5 conversions a day · 5 MB each
  • Higher limits →

From real runs

What you get — and what changes

  • Root element Changed

    The serializer wrapped output in <rows> and wrote one <row> element for each parsed worksheet row.

  • Column names Changed

    Worksheet headers became XML element names, including the title-derived <Q3 Orders> element seen in the API output.

  • Escaping Kept

    The apostrophe in Bo O'Connor was serialized as Bo O&apos;Connor, which keeps the text valid inside XML content.

  • Dates Changed

    Excel date values became ISO timestamp text, for example <column_3>2026-09-10T00:00:00.000Z</column_3>.

  • Percent display Changed

    Percent formatting was not retained, so the underlying value 0.375 was written inside the XML element.

  • Multiple sheets Changed

    The second worksheet was not written to XML in the single-table API output, and the response carried a warning about this flattening.

  • Workbook packaging Lost

    Original OOXML parts for styles, formulas, relationships, shared strings, and workbook metadata are not represented in the row XML.

Sample conversions

Rows XML from Orders

Input
17,714-byte workbook with merged title row, two order records, dates, a percentage, and a second sheet.
Output
610-byte XML began <rows><row><Q3 Orders>order_id</Q3 Orders> and later wrote <column_4>0.375</column_4>.

Escaped customer text

Input
Worksheet row A-002 contained customer Bo O'Connor.
Output
The XML snippet contained <column_2>Bo O&apos;Connor</column_2>, confirming text escaping in element content.

A real Excel XLSX → XML run

We converted our Excel XLSX sample (17 KB) with Table engine on 2026-09-11. It took 1 ms and produced a 694 B XML file, 96% smaller than the input. The engine raised 2 warnings, listed below.

Input · sample.xlsx · 17 KB

Workbook with 2 sheets (Pipeline, Notes); first sheet 5 rows, 25 cells, 0 formulas

Sheets
2
Sheet names
Pipeline, Notes
Rows
5
Cells
25
Formulas
0
frozenHeader
no

Output · sample.xml · 694 B

25 elements, root <rows>

Elements
25
Root element
rows
XML declaration
no
  • Workbook contains multiple sheets; each sheet was exposed as its own IR table.
  • Only the first table was written to this single-table format.

First lines of the output

xml
<rows>
  <row>
    <company>Northwind Traders</company>
    <stage>Proposal</stage>
    <arr>48000</arr>
    <owner>R. Ayers</owner>
    <close_date>2026-10-14</close_date>
  </row>
  <row>
    <company>Contoso Ltd</company>
    <stage>Negotiation</stage>
    <arr>120000</arr>
    <owner>P. Ng</owner>
    <close_date>2026-09-30</close_date>
  </row>
  <row>
    <company>Fabrikam</company>
    <stage>Qualified</stage>
…

Options and when to change them

sheet
Select the source worksheet when only one tab should become XML.
headerRowIndex
Choose a later row when the first worksheet row is a report title rather than valid field names.
dateHandling
Keep date cells as ISO values for machine exchange, or read displayed strings when exact visible dates matter.
rowElement
Set a different row tag only if your downstream XML importer expects a name other than row.

Do it yourself

Python pandas

bash
python - <<'PY'
import pandas as pd
df = pd.read_excel("in.xlsx", sheet_name="Orders", header=1)
df.to_xml("out.xml", index=False, root_name="rows", row_name="row")
PY

Sanitize column names before writing XML if the workbook headers contain spaces or punctuation.

Excel XLSX to XML by API or MCP

The HTTP API and the MCP server run the exact engine this page uses (Table engine); the response carries the same warnings the web converter shows. Check support first with GET /api/v1/pairs?from=xlsx&to=xml.

curl
curl -X POST https://filetypeconverters.com/api/v1/convert \
  -H "Authorization: Bearer $FTC_API_KEY" \
  -F "file=@input.xlsx" -F "from=xlsx" -F "to=xml" \
  -F 'options={"sheet":""}' \
  --output output.xml

Options this engine accepts for Excel XLSX → XML

KeyApplies toTypeDefault
sheetReading Excel XLSXstring
headerRowIndexReading Excel XLSXnumber0
dateHandlingReading Excel XLSXdate · stringdate
delimiterWriting XMLstring,
newlineWriting XML ·
sheetNameWriting XMLstring
dialectWriting XMLpostgres · mysql · sqlitepostgres
tableNameWriting XMLstringdata
createTableWriting XMLbooleantrue
API reference

When this is the wrong conversion

  • Use /convert/xlsx-to-json when the receiving system expects object records instead of XML elements.
  • Keep XLSX when formulas, formatting, multiple tabs, and workbook metadata must remain editable.

Excel XLSX to XML questions

Is XLSX to XML the same as unzipping an XLSX file?

No. An XLSX file is already an OOXML zip package, but this converter writes simple row data XML. It does not expose workbook internals such as styles.xml or sharedStrings.xml.

Can invalid worksheet headers break XML output?

Headers become XML element names. If your first row has spaces or a report title, use headerRowIndex or clean the headers before relying on the XML.

What happens to a second sheet?

Single-table XML output writes one selected table. Our default API run warned about multiple sheets and omitted the Lookups worksheet.