VisiData is a terminal-based interactive spreadsheet application for exploring, cleaning, restructuring, and analyzing tabular data. It provides a real-time curses interface for loading data from diverse sources (CSV, JSON, Excel, SQL databases, APIs, etc.), applying transformations via hundreds of keyboard-driven commands (sort, filter, pivot, melt, unfurl, etc.), and saving results. The architecture centers around a Sheet/Column abstraction with a plugin system for loaders, features, and specialized applications (vgit for Git, vdsql for SQL). Key strengths include its extensible command system, dynamic type inference, and reversible operations via undo/redo. While the core is cohesive, the extensive optional dependencies and experimental features introduce some maintenance complexity.
NocoDB is an open-source no-code database platform that provides a spreadsheet-like interface for managing relational databases. It supports multiple view types (grid, form, calendar, kanban, gallery, map, timeline, gantt), rich field types (formula, rollup, lookup, links, attachments, AI prompt), and automations via webhooks and scripts. The architecture is a full-stack monorepo: a NestJS backend with REST APIs (v1–v3), a Vue 3/Nuxt frontend with a custom canvas-based grid renderer, and a shared SDK (`nocodb-sdk`) for types, column helpers, and API client. Key entry points include the server bootstrap (`Noco.ts`), the Nuxt app, and the SDK. Data flows involve Knex-based query building with dialect-specific field handlers, caching via Redis, real-time updates via Socket.io, and background job processing via Bull. External dependencies include PostgreSQL, MySQL, SQLite, MSSQL, Oracle, Redis, and various storage/notification plugins. The codebase demonstrates high craftsmanship with reusable patterns such as column helpers, field handlers, builder generators, caching abstractions, and composables, though it contains many CE stubs for enterprise features and a large migration history.
e-virt-table is a high-performance, canvas-based virtual data table library designed for building spreadsheet-like grids in web applications. It renders tens of thousands of rows and columns using a custom canvas drawing engine with virtual scrolling, fixed columns, cell editing, selection, autofill, copy/paste, sorting, filtering, tree data, cell merging, and undo/redo. The library is framework-agnostic (usable in plain JS, Vue 2/3, and React) and is distributed as an npm package with UMD/ESM/CJS formats. Its architecture follows a modular event-driven pattern: a central Context class manages state and communication between subsystems (Selector, Editor, Database, Scroller, History, Validator, FinderBar, etc.), while a Paint module abstracts canvas drawing operations. The configuration surface is extensive (~100 options via CSS variables and a Config object), enabling deep customization of appearance and behavior. The repository also includes a bilingual VitePress documentation site with hundreds of interactive examples, as well as a dev playground and a suite of system-level tests for border rendering and scrollbar modes.
Calx.js is a spreadsheet calculation engine that brings Excel-like functionality to web applications. It parses and evaluates formulas, manages workbooks/sheets/cells with dependency tracking, and provides both a programmatic API and jQuery plugin interface. The architecture features a modular Workbook→Sheet→Cell hierarchy with modern Chevrotain-based formula parsing, FormulaJS integration for function implementations, and efficient recalculation through dependency tracking. Key entry points include the main Calx class and jQuery plugin wrapper, with data flows proceeding from HTML attribute parsing through formula evaluation to DOM updates.
tksheet is a pure Python Tkinter widget library that provides a full-featured, interactive spreadsheet-like table and treeview component for embedding in desktop applications. It renders only visible cells using Tkinter canvases, supporting cell editing, dropdowns, checkboxes, progress bars, notes/tooltips, find/replace, sorting, undo/redo, clipboard operations, and extensive theming. The architecture is modular, with separate classes for the main table, column headers, row index, text editor, and dropdown windows, all orchestrated by a central `Sheet` class that exposes a rich API for data manipulation and event handling. The library demonstrates strong software craftsmanship through its use of reusable patterns such as `Span` objects for addressing cell ranges with method chaining, `DotDict` for attribute-accessible configuration dictionaries, and a consistent `EventDataDict` structure for undo/redo and event propagation. It also includes self-contained utility modules for data formatting (`Formatter` class) and sorting (natural, version, and fast sort keys) that could be extracted and reused independently. Development of tksheet has officially ceased except for bug fixes and behavioral issues, as stated in the README. The codebase is mature and stable, with extensive documentation and a changelog spanning multiple major versions. While the library is tightly coupled to Tkinter and has some code duplication across similar components (e.g., column headers and row index), it remains a high-quality, production-ready widget for any Python GUI application requiring tabular data interaction.
UniOffice is a commercial Go library for reading, writing, and converting Office Open XML (OOXML) documents, including Word (.docx), Excel (.xlsx), and PowerPoint (.pptx) formats. It provides a high-level API for document manipulation, supporting features such as text formatting, tables, images, charts, animations, ActiveX controls, digital ink, and 3D models. The library also includes conversion to PDF via the UniPDF dependency. Architecturally, the library is layered: low-level schema types auto-generated from OOXML schemas handle XML marshalling/unmarshalling and validation; a middle layer of wrapper structs (e.g., Document, Spreadsheet, Presentation) provides a user-friendly interface; and conversion utilities transform documents to PDF. Key entry points include the main module (unioffice.go) for namespace handling and document type detection, common/common.go for core types like DocBase and ContentTypes, and the document/spreadsheet/presentation modules for specific operations. Data flows involve reading a ZIP package, parsing XML into schema types, manipulating via the high-level API, and writing back. The library relies on external dependencies such as unipdf (PDF generation), unichart (chart rendering), unitype (font parsing), and others for encryption and image processing. It requires a license key and uses obfuscated generated code to protect intellectual property. Despite the obfuscation, the library contains several well-designed, reusable components such as a storage abstraction, logger interface, wildcard matching, natural sort, measurement conversions, color parsing, MS-CFB binary format reader/writer, and an Excel number format engine. These components are self-contained and could be extracted for use in other projects.