Table Format Converter · emploidai Marketplace
emploidai Marketplace
Add-onsAppletsPlugins
Search tools, teams, and capabilitiesPublish
MarketplacePluginsTable Format Converter
Plugin
Limited listing

Table Format Converter

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.

878 installsUpdated Jul 11, 2026
Publisher information is incomplete

This community listing does not yet include every recommended support, privacy, pricing, and permission disclosure. Review the available package permissions before installing.

Capabilities

Tools

Available inside your emploidai workspace after installation.

Data sources

Available inside your emploidai workspace after installation.

Category

tool

Version

0.0.12fangyong20062006

Requirements

Maximum memory 256MB

Pricing

Not disclosed by publisher

Security & access

Review before installing

CompatibleRequires emploidai 1.0.0+

Permissions

  • Uses tool capability

Dependencies

No additional dependencies

Resources

Privacy policy
emploidai Marketplace

Discover capabilities. Review access. Install inside your workspace.

DocumentationSecuritySupportPrivacyTerms

Table Format Converter

Convert tables across Excel/CSV, JSON, and Markdown for use in Dify workflows.

Source Repository

https://github.com/fangyong20062006/dify-plugins/tree/update-table_converter-0_0_12/fangyong20062006/table_converter

Installation

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.

Features

  • Four directions: Excel/CSV→JSON, Excel/CSV→Markdown, JSON→Excel/CSV, Markdown→Excel/CSV
  • Excel/CSV→CSV: column projection, row limit, and optional downloadable cleaned .csv file
  • Robust input: auto-detects CSV encoding (UTF-8/UTF-8-BOM/GB18030/GBK/Big5) and delimiter, supports legacy .xls, and falls back to content sniffing when the extension is missing — built for Chinese Windows clients
  • Sheet selection, output-format, and row-limit options
  • Built on pandas, openpyxl and xlrd; all processing is local

Usage

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.

Privacy

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.

Changelog

0.0.6

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.

  • CSV encoding auto-detection. CSV input is now decoded by trying 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.
  • Legacy .xls support. Old binary .xls files (still common on Chinese Windows) are now read via xlrd, normalized to the same cell types as .xlsx.
  • Content-based format sniffing. When the filename/extension is missing or wrong, the format is detected from the file's magic bytes (ZIP → xlsx, OLE2 → xls).
  • blob-first file reading. Input bytes are taken from the Dify runtime's in-memory blob first, falling back to URL download — avoiding SSL/URL-type edge cases.
  • Windows-safe output names. Output filenames and Excel sheet names are sanitized (illegal characters replaced, Chinese preserved, sheet names capped at 31 chars).
  • Column headers are stripped of stray BOM/whitespace; CSV missing cells render as empty rather than the literal nan.

0.0.5

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.

0.0.4

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 the api and worker services 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.

0.0.3

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.

  • Input file URL resolution falls back url → remote_url (works when the file comes from an iteration node, where url may be empty).
  • Cell values: newlines and | 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 endless Running state.

0.0.2

Initial build: four-direction table conversion (Excel/CSV ⇄ JSON, Excel/CSV ⇄ Markdown) with sheet, output-format, and row-limit options.