WITAN

Witan Exec · Render · Calc · Lint · Alternatives · Pricing · Agent Skills · Install Witan

---

# See how Witan compares, then decide.

Agents may be able to edit spreadsheets with libraries like openpyxl
and LibreOffice, but they cannot verify their work. Witan closes
that gap.

## General / Deployment

| Feature                                   | Witan | openpyxl | LibreOffice | Excel COM |
|-------------------------------------------|-----------|----------|-------------|-----------|
| Zero dependencies (single binary)         | ✓     | ✗        | ✗           | ✗     |
| Agent native                              | ✓     | ✗        | ✗           | ✗     |
| Lightweight install                       | ✓     | ✓        | ✗           | ✗     |
| Runs in headless / CI environments        | ✓     | ✓        | ✓           | ✗     |
| Runs in cloud sandboxes (Codex, Docker)   | ✓     | ✓        | ✓           | ✗     |
| No GUI process required                   | ✓     | ✓        | ✓           | ✗     |
| Token-efficient output for agents         | ✓     | ✗        | ✗           | ✗     |
| Sub-second startup time                   | ✓     | ✓        | ✗           | ✗     |

## Render

| Feature                                              | Witan | openpyxl | LibreOffice | Excel COM |
|------------------------------------------------------|-----------|----------|-------------|-----------|
| Targeted cell-range rendering                        | ✓     | ✗        | ✗           | ✗     |
| Full-sheet rendering                                 | ✓     | ✗        | ✓           | ✓     |
| Auto-DPR scaling for vision models                   | ✓     | ✗        | ✗           | ✗     |
| Pixel diffing (before/after)                         | ✓     | ✗        | ✗           | ✗     |
| PNG and WebP output                                  | ✓     | ✗        | ✓           | ~     |
| Solid, gradient, and pattern fills                   | ✓     | ✗        | ✓           | ✓     |
| Font styling (bold, italic, underline, strikethrough)| ✓     | ✗        | ✓           | ✓     |
| Rich text (mixed formatting per cell)                | ✓     | ✗        | ✓           | ✓     |
| Text rotation (-90° to +90°)                         | ✓     | ✗        | ✓           | ✓     |
| All 8 horizontal alignment modes                     | ✓     | ✗        | ✓           | ✓     |
| Wrap text and shrink to fit                          | ✓     | ✗        | ✓           | ✓     |
| All 13 Excel border styles                           | ✓     | ✗        | ~           | ✓     |
| Merged cells                                        | ✓     | ✗        | ✓           | ✓     |
| Hidden rows and columns                             | ✓     | ✗        | ✓           | ✓     |
| 150+ locale-aware number formats                    | ✓     | ✗        | ✓           | ✓     |
| Conditional formatting (operators, text, color scales)| ✓    | ✗        | ✓           | ✓     |
| Embedded images and shapes                           | ✓     | ✗        | ✓           | ✓     |
| Text overflow into adjacent cells                    | ✓     | ✗        | ✓           | ✓     |
| Excel-accurate appearance                            | ✓     | ✗        | ~           | ✓     |
| Sub-second render speed                              | ✓     | ✗        | ✗           | ✗     |

## Calc

| Feature                                       | Witan | openpyxl | LibreOffice | Excel COM |
|-----------------------------------------------|-----------|----------|-------------|-----------|
| Full workbook recalculation                   | ✓     | ✗        | ✓           | ✓     |
| Structured output (address, formula, value)   | ✓     | ✗        | ✗           | ✗     |
| New-error-only filtering                      | ✓     | ✗        | ✗           | ✗     |
| Maths & statistics (SUM, AVERAGE, STDEV, etc.)  | ✓     | ✗        | ✓           | ✓     |
| Lookup & reference (VLOOKUP, INDEX, MATCH, etc.)| ✓     | ✗        | ✓           | ✓     |
| XLOOKUP / XMATCH                             | ✓     | ✗        | ✓           | ✓     |
| Logical functions (IF, IFS, SWITCH, IFERROR)  | ✓     | ✗        | ✓           | ✓     |
| Financial functions (NPV, IRR, XIRR, PMT, etc.)| ✓   | ✗        | ✓           | ✓     |
| Text functions (CONCATENATE, TEXTJOIN, etc.)  | ✓     | ✗        | ✓           | ✓     |
| Date & time functions                         | ✓     | ✗        | ✓           | ✓     |
| Dynamic array functions (FILTER, SORT, UNIQUE)| ✓     | ✗        | ~           | ✓     |
| Spill range support                          | ✓     | ✗        | ~           | ✓     |
| CSE (legacy) array formulas                  | ✓     | ✗        | ✓           | ✓     |
| 3D references across sheets                  | ✓     | ✗        | ✓           | ✓     |
| Named ranges (workbook + sheet scoped)       | ✓     | ✗        | ✓           | ✓     |
| Structured table references                  | ✓     | ✗        | ✓           | ✓     |
| Circular reference detection                 | ✓     | ✗        | ✓           | ✓     |
| Iterative calculation mode                   | ✓     | ✗        | ✓           | ✓     |
| Writes computed values back to file          | ✓     | ✗        | ✓           | ✓     |
| 9 error codes with explanations              | ✓     | ✗        | ✗           | ✗     |
| Range-scoped output display                  | ✓     | ✗        | ✗           | ✗     |

## Lint

| Feature                                        | Witan | openpyxl | LibreOffice | Excel COM |
|------------------------------------------------|-----------|----------|-------------|-----------|
| D001 — Double counting detection               | ✓     | ✗        | ✗           | ✗     |
| D002 — Unsorted lookup range detection         | ✓     | ✗        | ✗           | ✗     |
| D003 — Empty cell coercion detection           | ✓     | ✗        | ✗           | ✗     |
| D005 — Non-numeric values silently ignored     | ✓     | ✗        | ✗           | ✗     |
| D006 — Broadcast surprise detection            | ✓     | ✗        | ✗           | ✗     |
| D007 — Duplicate lookup keys detection         | ✓     | ✗        | ✗           | ✗     |
| D009 — Mixed percent/non-percent addition      | ✓     | ✗        | ✗           | ✗     |
| D030 — Merged cell reference (non-anchor)      | ✓     | ✗        | ✗           | ✗     |
| D031 — Spell check (9 languages)              | ✓     | ✗        | ✗           | ✗     |
| Rule filtering (skip/only)                     | ✓     | ✗        | ✗           | ✗     |
| Range-scoped linting                           | ✓     | ✗        | ✗           | ✗     |
| Severity levels (error, warning, info)         | ✓     | ✗        | ✗           | ✗     |

Legend: ✓ = Yes, ✗ = No, ~ = Partial

---

© Witan Labs Inc. 2026
hello@witanlabs.com · API Docs · GitHub · Research · Terms · Privacy
Witan Exec AlternativesPricing
Agent Skills Install Witan

See how Witan compares, then decide.

Agents may be able to edit spreadsheets with libraries like openpyxl and LibreOffice, but they cannot verify their work. Witan closes that gap.

General / Deployment Witan openpyxl LibreOffice Excel COM
Zero dependencies (single binary) Yes No No No
Agent native Yes No No No
Lightweight install Yes Yes No No
Runs in headless / CI environments Yes Yes Yes No
Runs in cloud sandboxes (Codex, Docker) Yes Yes Yes No
No GUI process required Yes Yes Yes No
Token-efficient output for agents Yes No No No
Sub-second startup time Yes Yes No No
Render Witan openpyxl LibreOffice Excel COM
Targeted cell-range rendering Yes No No No
Full-sheet rendering Yes No Yes Yes
Auto-DPR scaling for vision models Yes No No No
Pixel diffing (before/after) Yes No No No
PNG and WebP output Yes No Yes Partial
Solid, gradient, and pattern fills Yes No Yes Yes
Font styling (bold, italic, underline, strikethrough) Yes No Yes Yes
Rich text (mixed formatting per cell) Yes No Yes Yes
Text rotation (-90° to +90°) Yes No Yes Yes
All 8 horizontal alignment modes Yes No Yes Yes
Wrap text and shrink to fit Yes No Yes Yes
All 13 Excel border styles Yes No Partial Yes
Merged cells Yes No Yes Yes
Hidden rows and columns Yes No Yes Yes
150+ locale-aware number formats Yes No Yes Yes
Conditional formatting (operators, text, color scales) Yes No Yes Yes
Embedded images and shapes Yes No Yes Yes
Text overflow into adjacent cells Yes No Yes Yes
Excel-accurate appearance Yes No Partial Yes
Sub-second render speed Yes No No No
Calc Witan openpyxl LibreOffice Excel COM
Full workbook recalculation Yes No Yes Yes
Structured output (address, formula, value) Yes No No No
New-error-only filtering Yes No No No
Maths & statistics (SUM, AVERAGE, STDEV, etc.) Yes No Yes Yes
Lookup & reference (VLOOKUP, INDEX, MATCH, etc.) Yes No Yes Yes
XLOOKUP / XMATCH Yes No Yes Yes
Logical functions (IF, IFS, SWITCH, IFERROR) Yes No Yes Yes
Financial functions (NPV, IRR, XIRR, PMT, etc.) Yes No Yes Yes
Text functions (CONCATENATE, TEXTJOIN, etc.) Yes No Yes Yes
Date & time functions Yes No Yes Yes
Dynamic array functions (FILTER, SORT, UNIQUE) Yes No Partial Yes
Spill range support Yes No Partial Yes
CSE (legacy) array formulas Yes No Yes Yes
3D references across sheets Yes No Yes Yes
Named ranges (workbook + sheet scoped) Yes No Yes Yes
Structured table references Yes No Yes Yes
Circular reference detection Yes No Yes Yes
Iterative calculation mode Yes No Yes Yes
Writes computed values back to file Yes No Yes Yes
9 error codes with explanations Yes No No No
Range-scoped output display Yes No No No
Lint Witan openpyxl LibreOffice Excel COM
D001 — Double counting detection Yes No No No
D002 — Unsorted lookup range detection Yes No No No
D003 — Empty cell coercion detection Yes No No No
D005 — Non-numeric values silently ignored Yes No No No
D006 — Broadcast surprise detection Yes No No No
D007 — Duplicate lookup keys detection Yes No No No
D009 — Mixed percent/non-percent addition Yes No No No
D030 — Merged cell reference (non-anchor) Yes No No No
D031 — Spell check (9 languages) Yes No No No
Rule filtering (skip/only) Yes No No No
Range-scoped linting Yes No No No
Severity levels (error, warning, info) Yes No No No