A native table system for Emacs! Supports rich text, formula calculation, and plugin extensions ๐ฅ
โจ Features
| Appearance | Data Calculation | Extensibility |
|---|---|---|
| Rich Text Rendering Cell Images Adaptive Column Widths Unicode Borders |
Formula Engine (Excel Style) ๐ Cell References Real-time Calculation Elisp Expressions |
Plugin Architecture ๐ Multiple Data Sources Format Export ๐ง Custom Extensions |
๐ Core Capabilities
- Markdown Style Markup - Write resume summaries in cells
- Image Visualization - Display images directly in tables!
- Excel-Level Formulas -
=B2*C2ยท =SUM(A1:A10)ยท =IF(...) - Elisp Super Formulas - Powerful
=elisp:(cell"A1")expressions - Real-time Preview - "Static Preview + Dynamic Editing" in Org/Markdown
๐ 30 Seconds to Get Started
๐ฆ 1. Installation and Configuration
๐ฏ Recommended: Use use-package
;; ๐ One-stop configuration - Recommended! (use-package grid-table :load-path ("/path/to/grid-table" "/path/to/grid-table/plugins") :config (require 'grid-table) (require 'grid-table-plugins) ;; ๐ Custom save directory (setq grid-table-default-save-directory "~/Documents/่กจๆ ผ/") ;; ๐ผ๏ธ Image display optimization (setq grid-table-image-target-char-height 8) (setq grid-table-image-max-width-ratio 0.9))
๐ Traditional Way
;; ๐ Manual configuration path (add-to-list 'load-path "/path/to/grid-table") (add-to-list 'load-path "/path/to/grid-table/plugins") ;; ๐ฏ Load on demand (require 'grid-table) ;; Core functionality (require 'grid-table-plugins) ;; Plugin system (require 'grid-table-csv) ;; CSV support (require 'grid-table-org) ;; Org integration (require 'grid-table-markdown) ;; Markdown integration
๐ Operation Quick Reference
File Operations Overview
| ๐ฏ Action | ๐ Command | ๐ Shortcut | โก Tip |
|---|---|---|---|
| New | M-x grid-table-create |
- | Create a blank table |
| Open | M-x grid-table-find-file |
C-c C-f |
Open .grid file |
| Save | - | C-c C-w |
Smart path suggestion |
| CSV | M-x grid-table-find-file-csv |
- | Directly read CSV |
Editing Operations Quick Reference
| ๐ฏ Action | ๐ค Shortcut | ๐ Effect | |
|---|---|---|---|
| โ๏ธ Basic Editing | |||
| Cell Editing | e or right-click |
Enter edit mode | Cell focus |
| Title Editing | C-c t |
Modify table title | Global display |
| โ Row Operations | |||
| Insert Row Below | C-c r a |
Create new row below current row | Smart format inheritance |
| Delete Current Row | C-c r d |
Delete entire row | |
| โ Column Operations | |||
| Insert Column to Right | C-c c a |
Create new blank column | Auto-adjust width |
| Delete Current Column | C-c c d |
Delete entire column | Clear data |
Navigation Control Diagram
| ๐ฏ Direction | โจ๏ธ Key | ๐ฑ๏ธ Operation |
|---|---|---|
| โฌ๏ธ Up | p or โ |
Previous row |
| โฌ๏ธ Down | n or โ |
Next row |
| โฌ ๏ธ Left | S-TAB or โ |
Left cell |
| โก๏ธ Right | TAB or โ |
Right cell |
| ๐ Refresh | g |
Re-render |
๐ฏ Tip: Use n/p for vertical movement, TAB for horizontal movement
๐งฎ Formula Complete Guide
Basic Syntax Comparison Table
| ๐ฏ Type | ๐ Syntax | ๐ Example | ๐ก Description |
|---|---|---|---|
| ๐ Cell | =A1ใ=B2 |
=B2*C2 |
Relative reference |
| ๐ Range | =RANGE(A1:B5) |
=SUM(A1:A10) |
Continuous block |
| โจ Function | =FUNCTION(args) |
=AVERAGE(B2:B10) |
Built-in function set |
Official Built-in Function List
| ๐ Math Functions | ๐ Statistical Functions | ๐ฏ Conditional Functions | ๐จ Text Functions |
|---|---|---|---|
SUM Sum |
AVERAGE Average |
IF Conditional |
CONCAT Concatenate |
PRODUCT Product |
COUNT Count |
AND/OR Logical |
LEFT/RIGHT Slice |
MOD Modulus |
MAX/MIN Extremes |
NOT Invert |
LEN Length |
Elisp Formula Advanced Techniques (Expert Level)
=elisp:(+ 1 2 3) ; ๐ฏ Basic calculation =elisp:(+ (cell "A1") (cell "B2")) ; ๐ Cell reference =elisp:(format "%.2f%%" (* 100 (cell "ๅฎๆ็"))) ; ๐จ Formatted string =elisp:(let ((x (cell "B2"))) (* x x)) ; ๐ง Complex logic
This feature is turned off by default. For more detailed guidance, please refer to ELISP_FORMULA_GUIDE.md.
โ ๏ธ Security Warning:=elisp:executes arbitrary Elisp code! Only use in fully trusted documents
๐ Suggestion: Verify external files are safe and reliable throughM-x checkdoc
๐ Chart Visualization Guide
grid-table provides built-in chart functions that render ASCII/Unicode charts directly in cells. Charts use high-resolution Braille canvas for beautiful terminal-based visualizations.
Available Chart Functions
| ๐ Chart Type | ๐ Function | ๐ก Description |
|---|---|---|
| Bar Chart | BARPLOT |
Horizontal bar chart |
| Column Chart | COLUMNPLOT |
Vertical column chart |
| Line Chart | LINEPLOT |
Line plot with Braille rendering |
| Scatter Plot | SCATTER |
Scatter plot visualization |
| Histogram | HISTOGRAM |
Distribution histogram |
| Box Plot | BOXPLOT |
Statistical box plot |
| Density | DENSITY |
KDE density curve |
| Count | COUNT |
Frequency count chart |
| Multi-line | MULTILINE |
Multiple series line chart |
| Sparkline | SPARKLINE |
Compact inline trend |
Chart Syntax Examples
BARPLOT - Horizontal Bar Chart
=BARPLOT(labels, values, [title], [width])
Example:
=BARPLOT(A1:A4, B1:B4, "Revenue by Quarter", 50)
COLUMNPLOT - Vertical Column Chart
=COLUMNPLOT(labels, values, [title], [width], [height])
Example:
=COLUMNPLOT(A1:A4, B1:B4, "Monthly Sales", 40, 15)
LINEPLOT - Line Chart
=LINEPLOT(x-data, y-data, [title], [width], [height])
Example:
=LINEPLOT(A1:A10, B1:B10, "Trend Analysis")
HISTOGRAM - Distribution Histogram
=HISTOGRAM(values, [nbins], [title], [width])
Example:
=HISTOGRAM(C1:C100, 10, "Score Distribution")
BOXPLOT - Statistical Box Plot
=BOXPLOT(series1, series2, ..., [title], [width])
Example:
=BOXPLOT(A1:A20, B1:B20, "Comparison", 60)
SPARKLINE - Compact Trend Line
=SPARKLINE(data)
=SPARKLINE(val1, val2, val3, ...)
Example:
=SPARKLINE(A1:A10)
=SPARKLINE(10, 15, 13, 17, 19)
Chart Preview Gallery
Add demo screenshots under pictures/ and they will render here.
| Type | Preview |
|---|---|
BARPLOT |
![]() |
COLUMNPLOT |
![]() |
LINEPLOT |
![]() |
SCATTER |
![]() |
HISTOGRAM |
![]() |
BOXPLOT |
![]() |
DENSITY |
![]() |
COUNT |
![]() |
MULTILINE |
![]() |
SPARKLINE |
![]() |
Chart Demo File
See examples/chart-gallery.grid for a complete demonstration:
(:title "Chart Gallery" :headers ("Type" "Data1" "Data2" "Data3" "Data4" "Chart") :rows ( ("Revenue" "100" "150" "120" "200" "=BARPLOT(B1:E1, B2:E2, \"Revenue\")") ("Trend" "20" "40" "30" "50" "=LINEPLOT(B1:E1, B3:E3, \"Trend\")") ("Mini" "10" "12" "11" "15" "=SPARKLINE(B4:E4)") ))
๐ Format Integration Guide
Org Mode Deep Integration
#+BEGIN: grid-table
#+OPTIONS: :file "~/project/data.grid"
here display table preview (static preview)
#+END:
three steps:
M-x grid-table-org-insert-block- insert grid-table block (static preview)M-x grid-table-org-refresh-block- refresh grid-table block (dynamic preview)M-x grid-table-org-open-block- open grid-table block (edit mode)
Markdown GitHub-style
```grid-table :file ~/project/data.grid ```
here display table preview (static preview)
reStructuredText support
| ๐ฏ scenario | ๐ command | ๐ค result |
|---|---|---|
| from grid export | M-x grid-table-export-as-rst |
๐ standard RST format |
| insert existing grid file | M-x grid-table-rst-insert-table-from-file |
๐ smart path recognition |
Core Technology Principles
Data Flow Architecture Diagram
User Interface โโ grid-table.el โโ Core Engine
โ โ
data-source API โ grid-data-model
โ โ
CSV Plugin โโ Org Plugin โโ Custom Data Sources
Core API Quick Reference Table
| ๐ค interface type | ๐ key | ๐ return value type | ๐ก key purpose |
|---|---|---|---|
| data acquisition | |||
| raw value | :get-raw-value-at |
String | value before formula |
| computed value | :get-computed-value-at |
Any | formula calculation result |
| structure management | |||
| dimension query | :get-row-count |
Integer | import data statistics |
| new unit | :add-row / :add-column |
Boolean | success/failure |
| extension interface | |||
| load interface | :load-from-file |
Object | custom file support |
| save interface | :save-to-file |
Boolean | format export logic |
๐ code organization structure
grid-table/ # project root directory
โโโ grid-table.el # main entry + UI rendering
โโโ grid-data-model.el # data model core
โโโ grid-data-source.el # data source abstraction
โโโ grid-table-api.el # public API
โโโ grid-table-calc.el # formula calculation engine
โโโ grid-table-chart.el # chart visualization engine
โโโ grid-table-nav.el # navigation control logic
โโโ grid-table-parser.el # text parsing tool
โโโ grid-table-persistence.el # persistence support
โโโ plugins/ # plugin extension system
โ โโโ grid-table-csv.el # CSV format support
โ โโโ grid-table-org.el # Org mode integration
โ โโโ grid-table-markdown.el # Markdown integration
โ โโโ grid-table-rst.el # reStructuredText export
โ โโโ grid-table-example-plugin.el # plugin development example
โโโ examples/ # example files
โ โโโ chart-gallery.grid # chart demonstration
โโโ docs/ # technical documentation
โ โโโ ELISP_FORMULA_GUIDE.md # formula development guide
โ โโโ PLUGIN_DEVELOPMENT.md # plugin development manual
โโโ pictures/ # product screenshots and demonstrations
๐ค how to contribute
โก plugin development quick start
3 types of plugins (1 minute to master)
| ๐ฏ type | ๐ function description | ๐ฏ applicable scenario |
|---|---|---|
| ๐จ cell renderer | custom cell display appearance | progress bar, currency format, etc. |
| ๐ data source plugin | support new file formats | JSON, Excel reading |
| โก function plugin | add new function commands | data export, chart generation |
quick start template (copy and use)
;;; my-plugin.el --- quick template -*- lexical-binding: t -*- (require 'grid-table-plugins) ;; simple currency formatter (defun my-currency-renderer (value &optional cell-props) "Currency formatter, convert number to ยฅXX.XX format" (if (and value (stringp value)) (let ((num (string-to-number value))) (format "ยฅ%.2f" num)) "")) ;; register renderer (done!) (defun my-plugin-init () (grid-table-register-cell-renderer 'currency #'my-currency-renderer) (grid-table-register-plugin 'my-plugin)) (my-plugin-init) (provide 'my-plugin)
๐ complete development guideโ plugin development manual (fromๅ ฅ้จ to expert level)
๐ quick feedback path
- ๐ง bug report โ GitHub Issues
- โจ feature suggestion โ discussion forum
- ๐ง plugin contribution โ plugin development manual
๐ฏ community contribution direction
| ๐ฏ type | ๐ demand description | ๐ท๏ธ tag |
|---|---|---|
| data source plugin | Excel/JSON/Multiple data sources | enhancement, plugin |
| format export | LaTeX/ASCII/HTML/JSON export | extending, format |
| theme plugin | dark mode | UI/UX, theme |
| chart plugin | data visualization | visualization |










