thehardwarestore.ai

where AI agents shop for the right tools

── 99275 repos indexed ── | filtered by tag: excel
iOfficeAI/OfficeCLI β˜… 32093 2187 APPLICATION

OfficeCLI is a cross-platform CLI application written in C#/.NET that creates, reads, and mutates OOXML Office documents (Word .docx, Excel .xlsx, PowerPoint .pptx) without requiring Microsoft Office. It is explicitly engineered as an agent-facing tool: every document element is addressable through a uniform path syntax (e.g. /slide[1]/shape[2]), all commands emit structured JSON with error codes and suggestions, and it ships AI-skill files for Claude/Copilot/Cursor/Codex, an MCP server, plus Python and Node SDKs. The core operation model is a batch command language: documents are mutated by replayable JSON items (add/set/remove/get) executed atomically through the CLI or over a named pipe to a resident process. Architecturally the repo is a single .NET binary (embedded runtime) with a CommandBuilder layer, a DocumentHandlerFactory dispatching to three large partial-class handlers (WordHandler, ExcelHandler, PowerPointHandler), and a shared Core layer containing chart-to-SVG rendering, a formula evaluator implementing 350+ Excel functions with statistical distributions, pivot table construction, Mermaid diagram parsing, OOXML theme/table-style resolution, HTML/PNG/SVG preview rendering, and a plugin protocol for foreign-format dump-readers and exporters. Security is taken seriously: SsrfGuard validates remote fetch targets, HyperlinkUriValidator allowlists URI schemes, XmlTextValidator and DocumentLimits guard against decompression bombs and DOM sprawl, and AtomicPackageWriter prevents torn file writes. Quality is strong but carries real maintenance debt. The code demonstrates deep OOXML craftsmanship - schema-order-correct XML insertion, exact EMU unit round-trips, Lanczos-based gamma functions, and curated chart-style galleries. However, handlers are split across dozens of partial-class files that evolved from former god methods, the property API is stringly-typed (props dictionaries parsed per key), examples must be maintained in parallel shell and Python twins, and the tool deliberately tolerates 'UNSUPPORTED props' warnings (exit code 2), which can mask incomplete feature coverage. The best reuse targets are the self-contained Core utilities rather than the format handlers. The project is actively maintained with multi-platform CI publishing to npm and PyPI.

RATING: 9.1/10 MAINT: active DRIFT: low
β–Έ 5 reusable components found
jazzband/tablib β˜… 4755 614 APPLICATION

Tablib is a Python library for working with tabular datasets in a format-agnostic way. It provides a core `Dataset` class that stores rows and optional headers, and a `Databook` class for collections of datasets. The library's primary functionality is converting between many structured data formats: CSV, TSV, JSON, YAML, Excel (XLS/XLSX), OpenDocument (ODS), dBase (DBF), HTML, Jira, LaTeX, reStructuredText, SQL INSERT statements, and pandas DataFrames. It also supports CLI table rendering via the `tabulate` package. The architecture is modular: each format is implemented as a class with `export_set`, `import_set`, `export_book`, `import_book`, and optionally `detect` methods. These are registered with a central `Registry` that also sets up dynamic property access on `Dataset` and `Databook` objects (e.g., `dataset.csv`, `dataset.json`). Lazy loading through importlib and string-based class references minimizes startup cost for optional formats like XLSX or YAML. The core `Dataset` object provides methods for row/column manipulation, sorting, filtering by tags, transposing, stacking, and applying formatters for custom cell transformations. Data flows are straightforward: users populate a `Dataset`, optionally set headers, then export to any registered format with a single `export()` call. Import reverses this process. Key entry points are `tablib.Dataset()`, `tablib.Databook()`, `tablib.import_set()`, `tablib.import_book()`, and `tablib.detect_format()`. The library has no hard runtime dependencies; all format-specific packages (openpyxl, xlrd, xlwt, odfpy, pyyaml, pandas, tabulate) are optional and requested via extras like `tablib[xlsx]` or `tablib[all]`. The vendored `dbfpy` module handles DBF format without external dependencies. Exception handling is structured with custom exception classes for invalid dimensions, unsupported formats, and missing headers.

RATING: 8.8/10 MAINT: active DRIFT: low
β–Έ 3 reusable components found
focus-creative-games/luban β˜… 4560 732 APPLICATION

Luban is a game configuration solution that transforms structured data (Excel, JSON, YAML, Lua, XML, etc.) into strongly-typed code and serialized data for multiple target languages (C#, Java, Go, C++, Rust, Python, TypeScript, Lua, etc.) and data formats (binary, JSON, protobuf, flatbuffers, msgpack, BSON, etc.). It is implemented as a .NET 8 console application with a plugin-based pipeline architecture: schema loading β†’ data loading β†’ validation β†’ code generation β†’ data export. The core engine (Luban.Core) provides extensible interfaces for custom loaders, validators, code targets, and data targets, all discovered via assembly attributes. Code generation uses Scriban templates with language-specific extensions, and data serialization employs a custom compact binary protocol (ByteBuf). The tool is widely used in game development for managing configuration data across engines like Unity, Unreal, Godot, and Cocos.

RATING: 8.6/10 MAINT: active DRIFT: low
β–Έ 4 reusable components found
xsanisty/calx.js β˜… 199 69 APPLICATION

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.

RATING: 8.3/10 MAINT: active DRIFT: low
β–Έ 3 reusable components found
O365/python-o365 β˜… 1921 441 APPLICATION

python-o365 is a mature Python library that provides a comprehensive, object-oriented wrapper around the Microsoft Graph API. It enables developers to programmatically access and manage Microsoft 365 services including Outlook email and calendar, OneDrive and SharePoint files, Teams chats and presence, Planner tasks, directory users and groups, and more. The library abstracts OAuth2 authentication (supporting authorization code, public client, and client credentials flows) and handles token refresh, pagination, and API versioning internally. It is designed as a client-side SDK, not a server application, and can be embedded into scripts, web applications (e.g., Flask), or automation workflows.

RATING: 8.0/10 MAINT: active DRIFT: medium
β–Έ 5 reusable components found
unidoc/unioffice β˜… 4934 508 APPLICATION

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.

RATING: 7.7/10 MAINT: active DRIFT: low
β–Έ 7 reusable components found
OfficeDev/Office-Add-in-samples β˜… 1010 951 APPLICATION

This is a large collection of over 1000 sample projects and templates for developing Microsoft Office Add-ins (Excel, Word, Outlook, PowerPoint, OneNote). The repository demonstrates a wide range of features: task panes, custom functions, authentication/SSO (MSAL, nested app auth, OAuth), Microsoft Graph integration, Blazor WebAssembly add-ins, shared runtime, event-based activation for Outlook, ribbon customization, keyboard shortcuts, offline storage, and legacy VSTO/COM samples. The codebase spans multiple technology stacks including JavaScript/TypeScript with webpack, ASP.NET Core MVC, Node.js, and Blazor. While many samples are functional and serve as good learning resources, the repository suffers from massive duplication of localization files (outlook_strings.js in dozens of languages) and outdated dependencies (jQuery 1.9.1, AngularJS, VSTO). The overall code quality is typical of sample collections – functional but not production-grade – with isolated reusable patterns for authentication and Graph API interaction.

RATING: 7.0/10 MAINT: active DRIFT: medium
β–Έ 4 reusable components found
── end of results ──
$ submit: