#1: Lessons in Spreadsheet Automation: Building Excelize with creator Xu Ri
Notes from a conversation on open source, Go, and the future of Excel
Excelize is a spreadsheet automation library written in Go. It has 20k stars on GitHub at time of writing. I sat down for a long Q&A with its creator, Xu Ri. We discussed the commitment needed to produce high-quality documentation, principles he is strict about following as an open-source library maintainer, and case studies of Excelize adoption across Azure, Intel, and ByteDance.
Below are are my brief notes (full Q&A incoming).
Excelize in a Few Words
Excelize was created to reliably process real-world Excel files with complex formatting (charts, images, templates) where existing libraries failed.
“I believe the most advanced aspect of Excelize is its strong compatibility. While this isn’t an immediately obvious feature, achieving it requires extensive foundational work, long-term refinement, and validation through large-scale real-world use.
“This is also what sets the project apart from similar libraries. If you’re only reading and writing plain-text spreadsheets, you might not notice it, but once you start working with documents that have complex formatting, the importance of compatibility becomes clear.”
Spreadsheet data is increasingly used as input for AI workflows, making accuracy and compatibility more important than speed.
“As AI technologies built on LLMs continue to advance, high-quality data extraction has become increasingly important. Enterprises can use Excelize to accurately parse internal workbooks and apply the extracted data to private model training, RAG, MCP, or agent development. Because data quality is crucial to a model’s output, Excelize is positioned to play an even greater role in these areas.”
The Genesis of Excelize
Ri started developing Excelize because of a real-world need. He wanted to automatically generate Excel reports from user-supplied, heavily formatted spreadsheets (including images and charts) in a Linux-based environment without Microsoft Office.
After evaluating existing spreadsheet libraries across multiple languages, he found they consistently failed with complex formatting, causing data loss, broken layouts, or corrupted files. Attempts to extend existing open-source projects revealed fundamental architectural limitations, leading him to build a new solution from scratch.
How Excelize Works
Excelize models spreadsheets using a detailed in-memory representation aligned with the Office Open XML (OOXML) standard, with built-in validation and error correction.
The OOXML spreadsheet specification is extremely complex (thousands of pages), and many edge cases require empirical testing rather than documentation. “Currently, Excelize implements nearly 20% of the spreadsheet document format standard, which already covers the vast majority of commonly used features.”
Go was chosen for its balance of performance, developer productivity, cross-compilation, and backend/cloud suitability.
The API is intentionally flat and minimal: no deep hierarchies, no redundant abstractions, and no features that can be composed from existing ones.
Streaming APIs enable efficient generation of very large spreadsheets (hundreds of thousands to millions of rows) with low memory usage.
Where Excelize is Used
Excelize is widely used in automated reporting, import/export pipelines, and backend services where Excel functions as a data interchange format.
Typical use cases share three common characteristics: complexly formatted spreadsheet reports, repeatable steps, and potential risks of human error.
Excelize is used by Azure Quick Review (azqr), Intel (including PerfSpect and AOG), ByteDance’s Lark Suite, Japan’s Ministry of Land, Infrastructure, Transport and Tourism (PLATEAU VIEW 3.0), and MiHoYo to generate and process complex Excel documents across cloud infrastructure, enterprise collaboration, government systems, and game development, with adoption across companies of all sizes.
“GitHub introduced a feature that shows dependency graphs for open-source projects, and through it I discovered even more open-source projects and many more companies using Excelize.”
Xu Ri’s Guide to Automating Spreadsheets with Excelize
Estimate document size in advance
Don’t forget to close documents
Never ignore errors returned by functions
Pay attention to software security
Use streaming when appropriate
The Responsibility of Open-Source
Ri is deeply serious about the matter of library maintenance, approaching it as a long-term responsibility rather than a side activity.
“This is not merely a technical problem, it is a systems-level effort involving technology, design, and operations.”
Beyond adding features, he emphasizes discipline in documentation, testing, and review processes to ensure stability for downstream users. He prioritizes sustainability through clear project boundaries, high test coverage (>=99%), and consistent engagement with contributors.

