Extract Table from Email: Parse HTML Tables and Email Body Data to Excel
Pull the table out of an email body into clean rows and columns, with the structure intact
Most ways to extract a table from an email flatten it into one block of text. MailParse reads the HTML table in the email body, keeps the columns and rows, and exports them to Excel, CSV, and JSON. Connect Gmail, Outlook, Microsoft 365, or IMAP, or paste a message, and get a spreadsheet that matches the table you can see.
Last updated July 2026
Connect a mailbox to pull .eml/.msg in bulk, or paste a raw email to test the converter now.
Create a free account to download. No credit card required.
To extract a table from an email, use a parser that reads the HTML table in the message and writes each row and column into a spreadsheet instead of pasting it as one flattened cell. MailParse pulls repeating rows and columns from email bodies and HTML tables into clean Excel or CSV and keeps the structure intact, so the data lands ready to sort, filter, and total.
- Rows & columns
- Table structure preserved
- Excel / CSV / JSON
- Spreadsheet & API output
- No code
- No VBA, regex or split()
- Attachments
- Recorded by filename & type
Plenty of email arrives with the real information inside a table: an order summary with line items, a daily report, a price list, a statement of transactions. The moment you try to get that table into a spreadsheet, it falls apart. Copy and paste drops it into one cell, or splits it in ways that no longer line up. Power Automate users run the body through an HTML to text action and watch the columns collapse into a run of words. Automation tools like UiPath and Automation Anywhere can read the HTML, but only after you write expressions or regular expressions to find the table tags and rebuild the rows. The common complaint is the same everywhere: the table format breaks and becomes a bunch of text in one cell.
MailParse reads the table the way a person sees it. It parses the HTML table in the email body, keeps each row as a row and each column as a column, and writes the result to an Excel workbook, a CSV, or JSON. You connect your Gmail, Outlook, Microsoft 365, or IMAP mailbox once, then point at the table and name the columns you want to keep. Repeating rows, like the line items in an order confirmation, come out as separate rows instead of a single flattened block. MailParse records each attachment by filename, so if the table lives inside a PDF instead, run that file through a document tool first. The long-form walkthrough is in how to extract a table from an email, and Power Automate users who keep losing columns to an HTML to text action should read parsing an email body in Power Automate. No macro to maintain, no split() expressions to babysit, and nothing breaks when a sender adds a logo or reorders a column. This page covers the manual and automation methods honestly and shows where a dedicated parser saves the most time.
What the converter does
Everything you need to turn a pile of email files into a spreadsheet your team can actually use.
Keeps the table structure
The whole point of a table is the rows and columns. MailParse parses the HTML table from the email body and writes each cell to its own cell, so the spreadsheet matches what you saw in the message instead of one flattened paragraph.
Handles repeating rows
Order confirmations and reports often list many line items. MailParse turns each table row into its own spreadsheet row, so a single email becomes the right number of rows automatically, not one long string.
No code, expressions, or regex
Skip the VBA macro, the Power Automate split() and substring() expressions, and the UiPath HTML parsing. You point at the table and name the columns, and MailParse does the extraction.
Holds up when layouts change
You name the columns once and MailParse reads them even when a sender reorders the table or adds a logo, with no template to rebuild. Attachments are recorded by filename; for a table locked inside a PDF, use a document tool first.
Connects Gmail, Outlook, and IMAP
Link the inbox the email already arrives in directly. New mail with a table is parsed automatically, and you can run a backlog of older emails in one pass.
Excel, CSV, and JSON output
Download a formatted .xlsx or a CSV ready for a QuickBooks or Xero import, or take JSON from the API and webhooks to push the table rows into a database, a Google Sheet, or another app.
How to extract a table from an email into a spreadsheet
Four steps to replace the copy-paste, the macro, and the broken HTML-to-text.
Connect a mailbox
Connect your Gmail, Outlook, Microsoft 365, or IMAP inbox directly to MailParse.
Point at the table and name columns
Show MailParse the table in the body and name the columns you want to keep, such as item, quantity, price, or date. Add fields from outside the table or from attachments too.
Choose Excel, CSV, or JSON
Pick a formatted .xlsx, a CSV for an accounting or database import, or JSON to feed a webhook. Each table row maps to a spreadsheet row.
Run and reuse
Parse a backlog of existing emails in one pass and let new mail extract automatically. Adjust the columns anytime from a form, with no code to re-debug when a sender changes layout.
Who pulls tables out of email this way
Teams whose key numbers arrive as a table inside an email.
Operations & e-commerce
Turn the line-item table in an order or shipping confirmation into rows with item, quantity, price, and tracking in their own columns, ready for a reconciliation sheet.
Finance & accounting
Lift the rows out of a statement, remittance, or transaction table that arrives in the email body, then export a CSV for the books.
Reporting & analytics
Capture the figures from a daily or weekly report email that ships its data as an HTML table, so the numbers go straight into a spreadsheet instead of being retyped.
Anyone fighting HTML-to-text
Retire a Power Automate flow or UiPath workflow that flattens the table, and read named columns that hold up across many email layouts instead.
MailParse vs copy-paste and HTML-to-text
Preserves rows and columns
Copy-paste and HTML-to-text collapse a table into one cell or a run of text. MailParse maps each table cell to its own spreadsheet cell.
No expressions or macros
Power Automate split() chains, UiPath regex, and Outlook VBA all need code you maintain. MailParse asks you to name columns and handles the parsing.
Attachments recorded by filename
Native methods stop at the email body, and MailParse does too for file contents. It records each attachment by filename; for a table locked inside a PDF, use a document tool first.
Stable when layout changes
Expression-based parsing keys off fixed positions and breaks when a sender reorders a column. MailParse reads named columns across varied layouts.
Ways to extract a table from an email, compared
Getting a table out of an email comes down to four common routes, and they differ a lot in whether the rows and columns survive the trip into a spreadsheet. Here is an honest side by side, with credit to each method where it wins. If the data you need is single fields rather than a whole table, see extract data from Outlook emails or the email to Excel converter.
| What matters | MailParse | Copy and paste | Power Automate (HTML to text) | UiPath / RPA |
|---|---|---|---|---|
| What it does | Parses the HTML table in the body into rows and columns and exports Excel, CSV, or JSON | You select the table in the email and paste it into a spreadsheet by hand | An HTML to text action plus split and substring expressions try to rebuild the rows | A bot reads the email HTML and you write regex or parsing activities to pull the table |
| Setup and skills needed | Point at the table and name the columns, no code | None, but it is manual every single time | Build the flow and the expressions, then debug them when they flatten the table | Build and license a workflow, plus write and maintain the parsing logic |
| Keeps rows and columns intact | Yes, each table cell maps to its own spreadsheet cell | Often no, the table lands in one cell or splits out of line | Usually no, HTML to text collapses the columns into a run of words | Yes, if your parsing logic is built and kept working |
| Handles repeating line-item rows | Yes, every table row becomes its own spreadsheet row automatically | Sometimes, but you fix the alignment by hand | Only with extra looping and expressions you write | Yes, with a loop you build over the parsed rows |
| Reads attachment contents (PDF, CSV) | No, records attachments by filename; use a document tool for file contents | No, you open each attachment and copy it separately | No, it works on the email body text, not the files | Only if you add separate document parsing activities |
| Holds up when senders change layout | Reads named columns across varied layouts | Every new email is manual regardless of layout | A position-based expression breaks when a column moves | Regex and selectors break when the underlying HTML changes |
| Best for | Clean, structure-intact table rows from varied email layouts, no code | A one-off table you only need to move once | A simple, steady table already inside a Microsoft 365 flow | RPA teams already maintaining bots for a fixed format |
Power Automate and UiPath behavior depends on your actions, connectors, and version, and changes over time, so confirm current capabilities before you build. Capabilities described as of June 2026. No pricing is implied here.
Frequently asked questions
How do I extract a table from an email to Excel?
Connect your mailbox to a parser, point at the table in the body, and name the columns you want. MailParse reads the HTML table, keeps each row and column intact, and exports an Excel workbook or CSV. That avoids the copy-paste problem where the table lands in a single cell or splits in ways that no longer line up.
How do I extract table data from an email body to Excel?
The table inside an email body is usually HTML. MailParse parses that HTML table, turns every row into a spreadsheet row and every column into a column, and writes it to Excel, CSV, or JSON. You name the columns once, so the next email in the same format extracts automatically without copying anything by hand.
Why does my email table break when I paste it into Excel?
Pasting a table from an email often drops it into one cell or scatters it, because the email HTML does not map cleanly to Excel cells and the formatting comes along with it. A parser solves this by reading the underlying HTML table structure rather than the rendered text, so MailParse rebuilds the rows and columns exactly and writes them to clean spreadsheet cells.
How do I extract a table from an email in Power Automate?
In Power Automate, people run the email body through an HTML to text action and then split the result with expressions, but that usually flattens the table into a run of words. A more reliable route is to connect the mailbox to MailParse, which parses the HTML table directly into rows and columns and can return the data as JSON to a Power Automate flow, so you skip the split() chains.
Can I extract a table from an email in UiPath?
UiPath can read the email HTML and you can extract the table with regular expressions or HTML parsing activities, but it means building and maintaining that logic. MailParse parses the table without code and exposes the result through an API and webhooks, so a UiPath workflow can call it and get clean table rows back instead of parsing the HTML itself.
How do I extract an HTML table from an email body?
An HTML table in an email is built from table, row, and cell tags. MailParse reads those tags, maps each cell to a spreadsheet cell, and keeps repeating rows separate, then exports Excel, CSV, or JSON. You do not write any parsing logic; you name the columns you want and the structure comes through intact.
How do I export an email table to Excel in Outlook?
Outlook itself has no one-click way to export a table from a message body; the usual routes are copy-paste, which often breaks the layout, or a VBA macro that reads the HTMLBody and writes cells. MailParse connects your Outlook or Microsoft 365 inbox, parses the table for you, and exports a clean Excel file, with no macro to write or keep working.
Get the table out of your email, structure intact
Connect your inbox or paste an email and watch the table become clean rows and columns in a spreadsheet, ready for Excel, CSV, or your database, in seconds.