DEV.co
MCP Servers · qax-os

excelize

Excelize is a pure Go library for reading, writing, and manipulating Microsoft Excel files (XLSX, XLSM, XLAM, and template formats). It provides a straightforward API for creating spreadsheets, inserting data, charts, and images, with streaming support for large datasets.

Source: GitHub — github.com/qax-os/excelize
20.7k
GitHub stars
1.9k
Forks
Go
Primary language
BSD-3-Clause
License (OSI-approved)

Key facts

Objective fields from the source. Values we can't verify are shown as “Unknown” rather than guessed.

FieldValue
Repositoryqax-os/excelize
Ownerqax-os
Primary languageGo
LicenseBSD-3-Clause — OSI-approved
Stars20.7k
Forks1.9k
Open issues126
Latest releasev2.11.0 (2026-07-06)
Last updated2026-07-06
Sourcehttps://github.com/qax-os/excelize

What excelize is

Written in pure Go with no external dependencies, Excelize handles OOXML (Office Open XML per ECMA-376) file formats. It supports cell operations, formula handling, chart generation, picture insertion, and streaming APIs for memory-efficient processing of large worksheets. Requires Go 1.25.0 or later.

Quickstart

Get the excelize source

Clone the repository and explore it locally.

terminalbash
git clone https://github.com/qax-os/excelize.gitcd excelize# follow the project's README for install & configuration

Need it deployed, integrated, or customized instead? DEV.co ships production installs.

Best use cases

Programmatic Report Generation

Generate Excel reports dynamically from application data, including formatted tables, charts, and images without requiring Excel installed.

Bulk Data Import/Export

Read large Excel files efficiently using streaming APIs or write bulk data with minimal memory overhead, suitable for ETL pipelines and data migrations.

Go-based Business Intelligence Tooling

Build Go microservices and CLI tools that integrate Excel as a data format, eliminating COM dependencies (Windows-only) and external service calls.

Implementation considerations

  • Ensure Go version 1.25.0+ is available in your build and runtime environment.
  • Use `defer f.Close()` consistently to release file handles and prevent resource leaks, especially in long-running services.
  • For large files (>100K rows), leverage streaming APIs (`GetRows` with limits or custom iterators) rather than loading entire sheets into memory.
  • Test chart and image insertion with your target Excel versions (Excel 2007+) to verify compatibility with downstream users.
  • Validate formula strings before insertion; the library does not perform formula syntax validation at write time.

When to avoid it — and what to weigh

  • Pixel-Perfect Visual Control Required — If you need fine-grained control over font rendering, exact spacing, or complex conditional formatting beyond basic styling, manual XML editing may be necessary.
  • VBA Macro Preservation at Scale — While the library can read/write XLSM files, comprehensive VBA macro manipulation and testing is not clearly documented; use with caution if macro integrity is critical.
  • Non-Go Environment — Excelize is Go-only; integrating into non-Go applications requires wrapping via gRPC, REST API, or system calls, adding deployment complexity.
  • Real-time Collaborative Editing — Not designed for live multi-user editing scenarios; best suited for batch operations and offline file manipulation.

License & commercial use

Excelize is licensed under BSD-3-Clause (New or Revised License), a permissive OSI-approved license.

BSD-3-Clause is a permissive license that permits commercial use, modification, and distribution with appropriate attribution and liability disclaimers. No commercial restrictions or fees apply. Always review the license text to ensure compliance with your internal policy.

DEV.co evaluation signals

Editorial assessment — not user reviews. Directional, with an explicit confidence level.

SignalAssessment
MaintenanceActive
DocumentationStrong
License clarityClear
Deployment complexityLow
DEV.co fitStrong
Assessment confidenceHigh
Security considerations

No security audit details provided in public data. When processing untrusted Excel files, be aware of: (1) potential XML bomb attacks in OOXML (zip-based); (2) formula injection if user-supplied data is inserted as formulas; (3) resource exhaustion from maliciously crafted large files. Validate input, limit file sizes, and do not execute formulas from untrusted sources. No published CVEs found in the data provided; requires independent security review.

Alternatives to consider

Apache POI (Java)

Industry-standard for Excel manipulation; required if you need JVM-based deployment, mature ecosystem, and extensive third-party integrations. Heavier footprint and slower startup.

OpenPyXL (Python)

Pythonic equivalent for data science and automation workflows; preferred if you use Python and need tight NumPy/Pandas integration. Not suitable for pure Go backends.

xlsx (Node.js)

Lightweight JavaScript library for browser and Node.js; choose if you need client-side Excel generation or a serverless Node environment. Limited formula and chart support compared to Excelize.

Software development agency

Build on excelize with DEV.co software developers

Excelize offers a production-ready, dependency-free solution for Excel file handling. Contact our team to architect a scalable data automation or reporting system.

Talk to DEV.co

Related open-source tools

Surfaced by semantic similarity across the DEV.co open-source index.

Related on DEV.co

Explore the category and the services that help you build with it.

excelize FAQ

Does Excelize require Microsoft Excel to be installed?
No. Excelize is a pure Go library that reads and writes OOXML (Office Open XML) format directly. It does not depend on Excel, Office, or any native Windows libraries, making it platform-agnostic.
Can Excelize handle large Excel files without loading the entire file into memory?
Yes, via streaming APIs. For reading, use `GetRows` with filtering; for writing, use streaming writer methods. This is essential for processing files with millions of rows.
Is VBA macro support reliable?
Excelize can read and write XLSM files (macro-enabled), but comprehensive VBA manipulation and validation is not clearly documented. Macros may or may not be preserved depending on complexity; test thoroughly before using in production.
What versions of Excel are supported?
Excelize targets Excel 2007 and later (.xlsx, .xlsm, .xlam, .xltm, .xltx). Older .xls (Excel 97-2003) format is not supported.

Software developers & web developers for hire

DEV.co is a software development agency delivering custom software development services to companies building on open source. Our software developers and web developers design, integrate, and ship production systems — spanning web development, APIs, AI, data, and cloud. If excelize is part of your mcp servers roadmap, our team can implement, customize, migrate, and maintain it.

Ready to integrate Excel into your Go application?

Excelize offers a production-ready, dependency-free solution for Excel file handling. Contact our team to architect a scalable data automation or reporting system.