PengSheets — Markdown Spreadsheet Editor
Transform your Markdown tables into a powerful spreadsheet experience.
Highlights •
Quick Start •
Settings •
Why PengSheets •
Roadmap •
Contributing
PengSheets transforms your Markdown tables into a rich, interactive spreadsheet view. Powered by md-spreadsheet-parser, it runs a robust Python parser directly in your editor via WebAssembly, offering superior parsing accuracy and seamless multi-sheet support.
Read in Japanese: 日本語版はこちら( README )
✨ Highlights
| Feature |
Description |
| 🎯 Excel-like Editing |
Navigate and edit Markdown tables with familiar spreadsheet controls |
| 📑 Multi-Sheet Workbooks |
Organize data across multiple sheets using Markdown headers |
| ⚡ Real-time Sync |
Changes in the spreadsheet instantly reflect in your Markdown source |
| 🐍 Python-Powered Parsing |
Robust WebAssembly-based Python parser for reliable table handling |
| 🌍 Multilingual UI |
English and Japanese interface support |
| 🎨 Native VS Code Look |
Seamlessly integrates with your VS Code theme |
🚀 Quick Start
Install the extension from the VS Code Marketplace
Open any Markdown file (.md) containing tables
Launch the spreadsheet editor:
Click the table icon in the editor title bar (fastest!)

Or right-click a .md file in the Explorer and select Open with PengSheets
Or open Command Palette (Cmd+Shift+P / Ctrl+Shift+P) and run: Markdown: Open with PengSheets
Edit your tables with the spreadsheet interface — changes sync automatically!
Tip: Create a new workbook with Markdown: Create New Spreadsheet File command.
⚙️ Settings
PengSheets offers extensive customization to match your documentation style:
| Setting |
Description |
Default |
pengSheets.parsing.rootMarker |
Marker indicating the start of the data section |
# Tables |
pengSheets.parsing.sheetHeaderLevel |
Header level for sheet names (e.g., 2 for ##) |
2 |
pengSheets.parsing.tableHeaderLevel |
Header level for table names (e.g., 3 for ###) |
3 |
pengSheets.parsing.captureDescription |
Capture text between header and table as description |
true |
pengSheets.parsing.columnSeparator |
Column separator character |
\| |
pengSheets.parsing.headerSeparatorChar |
Header separator character |
- |
pengSheets.parsing.requireOuterPipes |
Require outer pipes in generated tables |
true |
pengSheets.parsing.stripWhitespace |
Strip whitespace from cell values |
true |
pengSheets.language |
UI language (auto, en, ja) |
auto |
pengSheets.validation.dateFormat |
Date format for validation cells |
YYYY-MM-DD |
🤔 Why PengSheets?
|
PengSheets |
Other Markdown Table Editors |
| Multi-Sheet Support |
✅ Full workbook organization |
❌ Single table only |
| Parsing Engine |
Python (WebAssembly) — battle-tested |
JavaScript — limited edge case handling |
| Real-time Sync |
✅ Bidirectional |
⚠️ Often one-way |
| Metadata Support |
✅ Table descriptions, sheet organization |
❌ None |
| Keyboard Shortcuts |
✅ Excel-like navigation |
⚠️ Limited |
� Use with Python
Files created with PengSheets can be easily read in your Python scripts using md-spreadsheet-parser. The Lookup API lets you access specific sheets and tables by name:
from md_spreadsheet_parser import parse_workbook_from_file
# Load your PengSheets workbook
workbook = parse_workbook_from_file("data.md")
# Access sheet and table by name
sheet = workbook.get_sheet("Sales Data")
table = sheet.get_table("Q1 Results")
# Use your data
print(table.headers) # ['Year', 'Revenue']
print(table.rows) # [['2024', '1000'], ['2025', '1500']]
Install the parser:
pip install md-spreadsheet-parser
📚 See the Cookbook for more recipes (Pandas, Excel, type-safe validation, and more).
�🗺️ Roadmap
We're actively developing PengSheets! Planned features include:
- Computed Columns: Support for simple formulas and VLOOKUP-style cross-table references
- Performance Improvements: Optimization for handling large tables smoothly
- Advanced Document Editing: Image insertion, list completion, and richer Markdown support for document tabs
- Search & Replace: Functionality to find and replace text within the grid
- Visual Enhancements: Conditional formatting for data visualization
🤝 Contributing
We welcome your feedback and ideas! If you encounter a bug or have a feature request:
- Check existing Issues to avoid duplicates
- Open a new Issue with a clear description
- Include steps to reproduce (for bugs) or use cases (for features)
📄 License
This project is licensed under the MIT License.
Made with ❤️ by the PengSheets team