by fangyong20062006 · v0.0.12
Convert tables across Excel/CSV, JSON, and Markdown in four directions (Excel/CSV→JSON, Excel/CSV→Markdown, JSON→Excel/CSV, Markdown→Excel/CSV), plus Excel/CSV to Array (row-object array for Iteration nodes), with sheet, output-format, and row-limit options.
This community listing does not yet include every recommended support, privacy, pricing, and permission disclosure. Review the available package permissions before installing.
Available inside your emploidai workspace after installation.
Available inside your emploidai workspace after installation.
Convert tables across Excel/CSV, JSON, and Markdown for use in Dify workflows.
Install from the Dify Marketplace, or upload the .difypkg file via
Plugins → Install plugin → Local file on your Dify instance (Dify 1.0+).
The plugin requires no credentials; its tools appear under Table Format Converter
and can be added to any workflow as tool nodes.
Add a converter tool to your Dify workflow, provide the input (an uploaded file or text), choose the output format, and receive the converted result.
For large spreadsheets, set Max Rows (and/or a specific Sheet Name) on the Excel/CSV→Markdown and Excel/CSV→JSON tools. Converting a full multi-thousand-row sheet produces a very large result that is slow to transfer and too big to feed downstream LLM nodes.
The plugin reads the file or text you provide (e.g. a file uploaded to your Dify instance) and converts it locally. No data is sent to any external service. See PRIVACY.md for details.
Added — Excel/CSV → CSV can now emit a downloadable file.
A new Output option (text / file / both, default text so existing workflows
are unaffected) lets the tool return a real .csv file in addition to (or instead of)
the CSV text string. The file is written as UTF-8 with BOM, so a Chinese spreadsheet
opens correctly when double-clicked in Excel on Windows. An optional Output Filename
is provided (defaults to the input file's name).
Improved — robustness for Chinese Windows clients.
UTF-8-BOM → UTF-8 → GB18030 → Big5 → latin-1 in order, with delimiter
auto-detection (, / ; / tab). Previously a GB18030/GBK CSV exported from a
Chinese Excel raised UnicodeDecodeError and the conversion failed outright..xls support. Old binary .xls files (still common on Chinese Windows)
are now read via xlrd, normalized to the same cell types as .xlsx.blob first, falling back to URL download — avoiding SSL/URL-type edge cases.nan.Added — Excel/CSV → CSV (text) tool.
Reads an Excel/CSV file and returns its content as a CSV-formatted text string
(not a file). Supports column projection via a comma-separated Columns parameter
and a Max Rows limit. CSV is more compact than a Markdown table, and keeping only the
columns a downstream node needs shrinks the inter-node string dramatically (e.g. a
17,051-row export drops from ~7 MB Markdown to ~1.5 MB when projected to 7 columns).
Reading is streaming (openpyxl read_only); proper CSV quoting is applied via the csv
module, so commas/quotes/newlines inside cells are safe.
Changed — raised the Excel/CSV → Markdown output-size cap from ~1.5 MB to ~12 MB.
The 0.0.3 safeguard was conservative and truncated very large sheets (e.g. a
~17,000-row × 53-column export, ~7 MB of Markdown), which could cause downstream
nodes to see only part of the data. The cap is now ~12 MB so a full large sheet is
emitted intact. Reading is still streaming (openpyxl read_only), so memory stays flat.
Note for self-hosted Dify: a multi-MB Markdown string passed between workflow nodes can exceed
CODE_MAX_STRING_LENGTH(default 80000). Raise it (e.g.10000000) on theapiandworkerservices if you route large tables through code nodes. You can also still set Max Rows on the tool to keep the output small on purpose.
Fixed — large Excel files no longer hang the plugin.
Both Excel/CSV → Markdown and Excel/CSV → JSON previously loaded the entire
workbook into memory via a non-streaming pandas.read_excel call. On large sheets
(e.g. ~17,000 rows × 53 columns) this took 30s+ and a large amount of memory; combined
with node-level auto-retry it could leave the node stuck in Running indefinitely.
Reading now uses streaming openpyxl (read_only=True), which keeps memory flat and
stops early once a row/size limit is reached.
Fixed — Excel/CSV → JSON no longer errors on duplicate column headers.
Sheets with repeated header names raised DataFrame columns must be unique.
Duplicate columns are now de-duplicated with pandas-style .1 / .2 suffixes.
Added — output safeguards.
Excel/CSV → Markdown: a ~1.5 MB output-size cap. When reached, the table is
truncated and a clear notice is appended instead of emitting an unbounded string.Excel/CSV → JSON: a new optional Max Rows parameter (parity with the
Markdown tool). 0 or empty still means all rows.Improved.
url → remote_url (works when the file comes
from an iteration node, where url may be empty).| are escaped so they don't break Markdown tables;
integer-valued floats render without a trailing .0; dates/times are normalized.Unchanged.
_base.py download (already enforces a 60s timeout), requirements.txt, and the
package structure are untouched. Only meta.version and the top-level version
were bumped to 0.0.3.
Upgrade note: after installing, set node retry to off (or
max_retries: 1) on the converter nodes — auto-retry can otherwise amplify a single slow call into an apparently endlessRunningstate.
Initial build: four-direction table conversion (Excel/CSV ⇄ JSON, Excel/CSV ⇄ Markdown) with sheet, output-format, and row-limit options.