A third-party, opt-in XLSX converter plugin for MarkItDown that reads workbooks with WolfXL. It uses only WolfXL's public workbook API and public pandas constructors. It does not modify MarkItDown, register a pandas engine, or import private pandas modules.
pip install markitdown-wolfxl
markitdown --list-pluginsThe package requires wolfxl>=2.0.17,<2.1, pandas 2.x, and MarkItDown >=0.1.9,<0.2. WolfXL ships native wheels for common platforms; see its project page for the current list.
Installing the package does not change ordinary MarkItDown conversions, because MarkItDown keeps plugins disabled by default. Enable plugins to use it:
from markitdown import MarkItDown
result = MarkItDown(enable_plugins=True).convert("workbook.xlsx")
print(result.markdown)markitdown --use-plugins workbook.xlsxThe package follows MarkItDown's version-1 plugin interface: entry point group markitdown.plugin, __plugin_interface_version__ = 1, and register_converters. Its XLSX converter is registered at priority PRIORITY_SPECIFIC_FILE_FORMAT - 1, ahead of the built-in converter. Files with an explicit non-XLSX extension, including .xls, are declined. XLSX MIME information can identify streams without a filename. Other enabled plugins remain subject to MarkItDown's normal priority rules.
Each worksheet becomes a Markdown heading and a cell table, in workbook order, using first-row headers, pandas-compatible missing values and dtype inference, and MarkItDown's public HTML converter. Workbooks are closed on success and on conversion failure. The reader ignores understated worksheet-dimension hints instead of silently truncating data.
This converter handles worksheet cell content, not embedded-image OCR or custom image hooks. Do not enable it when another XLSX plugin's image processing is required. Malformed ZIP or XML, encrypted, Strict OOXML, and some legacy-producer files can convert differently from the built-in reader. WolfXL's rejection of duplicate ZIP entry names is kept.
When this plugin raises an ordinary exception, MarkItDown may fall back to another converter, so a successful MarkItDown result does not by itself show that WolfXL converted the file. For example, WolfXL rejects a workbook with a case-insensitive duplicate ZIP entry, and MarkItDown's built-in reader then accepts it. Enabling this plugin is not an application-wide ZIP validation policy or security boundary.
On a 353-file XLSX test corpus, 318 files that WolfXL converts produce Markdown byte-identical to MarkItDown's built-in converter. No performance claim is made.
pip install -e '.[test]'
pytestTests cover entry-point discovery, explicit activation, registration priority, XLSX-only acceptance, public-API dispatch, headers and type inference, dimension hints, workbook closure, and fallback behavior.
MIT. This is an independent third-party plugin, not sponsored by or affiliated with Microsoft. MarkItDown's copyright notice is retained in LICENSE for the adapted table-to-Markdown assembly.