Upload Excel file
Supports .xlsx, .xls, .csv files (up to 25 MB).
1<?xml version="1.0" encoding="UTF-8"?>2<workbook>3<row>4<id>1</id>5<name>Alice Johnson</name>6<email>[email protected]</email>7<role>Admin</role>8<active>true</active>9</row>10<row>11<id>2</id>12<name>Bob Smith</name>13<email>[email protected]</email>14<role>Editor</role>15<active>true</active>16</row>17<row>18<id>3</id>19<name>Carol Williams</name>20<email>[email protected]</email>21<role>Viewer</role>22<active>false</active>23</row>24</workbook>25
Excel to XML converts .xlsx / .xls workbooks, CSV exports, and pasted table content into clean XML in your browser. Multi-sheet support, configurable element / attribute styles, and full XML declaration controls let the output drop directly into SOAP services, ETL pipelines, government schemas, and CMS importers.
Spreadsheets are how most teams collect and share tabular data, but legacy systems — payment gateways, ERP integrations, shipping providers, government filings — still consume XML. Manually writing an importer for every export wastes hours; this tool converts the source straight into well-formed XML with predictable element names and configurable structure.
.xml file ready for the consumer.Input Excel card hosts three input tabs: Paste content for clipboard rows, Extract from URL for Google Sheets / public xlsx (server-proxied to bypass CORS), and Upload Excel for local .xlsx/.xls/.csv files up to 25 MB.
Output XML card renders the result in a compact line-numbered viewer with Copy and Download .xml actions.
XML Format panel controls sheet selection, cell style, element names, indent, CDATA, declaration, and value coercion.
Workbook Info shows the loaded file name and sheet/row counts.
<field name=... value=.../> shape.Order, OrderLine).order or customer.rss, sheet element channel, row element item.Uploaded .xlsx and .xls files are parsed entirely in your browser. The Extract from URL tab is the only path that touches the server, and only to proxy the URL you supply so CORS does not block direct fetches. Nothing is stored.
The first row becomes element names by default. XML names must start with a letter or underscore and only contain letters, digits, hyphens, underscores, and dots — invalid characters are replaced with _ automatically.
Element style emits <name>John</name> nested under each <row>. Attribute style writes columns as attributes: <row name="John" age="30"/>. Value-attribute combines both: each cell becomes <field name="name" value="John"/>. Pick based on your downstream parser.
Never always escapes &, <, > as entities. Auto wraps cell text in <![CDATA[...]]> when it contains characters that would otherwise need escaping. Pick Never for strict XML schemas; Auto for blog-style content with HTML-like fragments.
XML attribute values are always strings. Coerce types still detects the underlying type and emits the literal characters (42, true), but the XML attribute syntax requires quotes. Element-style output preserves the bare scalar inside the element.
Active sheet exports only the currently selected sheet wrapped in the root element. All sheets exports every sheet under its own <sheet name="..."> wrapper, useful when downstream consumers need the entire workbook in one XML file.