Extract Word to CSV
Tables from .docx,
no Word needed.
Free Word to CSV converter. Upload any .docx file — all tables detected automatically with row and column counts. Handles merged cells (colspan). Excludes deleted tracked-change text. Download the CSV or copy to clipboard. Runs entirely in your browser.
JSZip + DOMParser — the same approach used for the CSV to Word tool, in reverse.
A .docx file is a ZIP archive. JSZip loads the file as an ArrayBuffer and extracts word/document.xml — the main document body containing all tables, paragraphs and headings. The entire operation happens in memory without writing to disk.
The XML is parsed with the browser's native DOMParser using the OOXML namespace. All <w:tbl> table elements are found, and each <w:tr> row and <w:tc> cell is read. gridSpan attributes handle merged columns. Deleted text (<w:del>) is excluded.
All tables are listed with their dimensions. Select the table, choose your delimiter, and click Export. The cells are serialised as RFC 4180 CSV with UTF-8 BOM encoding — ready to open in Excel, Google Sheets or any data tool.
Word documents often contain data tables — financial reports, research findings, comparison matrices — that need to be extracted to a spreadsheet for further analysis. CSVShift extracts any table without requiring Word to be installed.
Questionnaires and structured forms in Word format use tables as layout elements. Extracting the answer cells as CSV enables batch processing of multiple form responses without manual copy-paste.
Moving content from Word-based systems to modern databases or CMS platforms requires extracting structured data. Tables in Word documents are the most common structured data format that needs migration to CSV for database import.
Linux and Mac users without Microsoft Word can extract table data from .docx files using CSVShift without installing LibreOffice. The browser does all the work — upload the .docx and download the CSV.
Word tables read
in your browser. No Word.
CSVShift uses JSZip to unzip the .docx archive and the browser's native DOMParser to parse the Office Open XML. Your file is never uploaded. The OOXML namespace (http://schemas.openxmlformats.org/wordprocessingml/2006/main) is used throughout — the correct way to handle Word XML — not brittle regex or string matching.
from docx import Document; import csv; doc = Document('f.docx'); csv.writer(open('out.csv','w')).writerows([[c.text for c in r.cells] for r in doc.tables[0].rows]). Requires pip install python-docx. For all tables: iterate doc.tables.