Open Source Alternatives
  • Alternatives
  • Categories
    Categories by size1,196 projects
    • Developer Tools617
    • AI & Machine Learning520
    • Business & Productivity290
    • Web Development215
    • Security & Monitoring180
    • Communication & Collaboration159
    • IT Management151
    • LLMOps & AI Tooling132
    • Cloud & Hosting129
    • Product & Project Management126
    Browse all 21 categoriesDesign & Creative, DevOps & CI/CD and 9 more
  • Blog
  • Advertise
SearchNotion, Slack, password manager.../
Submit
Open Source Alternatives
  • Alternatives
    • Developer Tools617
    • AI & Machine Learning520
    • Business & Productivity290
    • Web Development215
    • Security & Monitoring180
    • Communication & Collaboration159
    • Browse all 21 categories
  • Blog
  • Advertise
Submit your project

New open source projects by email

The projects we add and every new guide. Free, unsubscribe any time.

Open Source Alternatives LogoOpen Source Alternatives

Handpicked Open Source Alternatives to Paid Softwares

Add Open Source Alternatives as a preferred source on Google

Product

  • Categories
  • Tag
  • Advertise

Resources

  • Blog
  • Collection
  • Submit

Company

  • Privacy Policy
  • Terms of Service
  • Refund Policy
  • Sitemap

Alternatives

  • Claude Code
  • Jira
  • Notion
  • Slack
  • Linear
  • Wispr Flow
  • All alternatives
© 2026 Open Source Alternatives. All rights reserved.
Open SourceAlternatives
Home/Categories/Developer Tools/Excelize
icon of Excelize

Excelize

  • 21.1K stars
  • BSD-3-Clause
  • Active this month
  • Last commit 8 days ago

Last verified Nov 10, 2026

Build and parse Excel spreadsheets in pure Go with streaming API support, chart generation, and no external dependencies. BSD-3-Clause.

Visit websiteGitHub21.1K stars
image of Excelize
TL;DR

Excelize is a pure Go library for reading and writing Excel files (XLSX, XLSM, XLAM, XLTX, XLTM), licensed under BSD-3-Clause. It replaces paid spreadsheet libraries like Aspose.Cells and EPPlus for Go backend services that need report generation, data import, or spreadsheet export without licensing costs. The streaming API handles worksheets too large for in-memory processing, and chart generation requires only a few lines of code. Best for backend engineers building Go services that produce or consume Excel files in production.

Read the full breakdownHide the full breakdownWho it is for, how it works, trade-offs, the quick start and the FAQ
who it's for

Who Excelize is for#

Backend engineers generating Excel reports from Go services

Excelize fits into Go HTTP handlers or background jobs that produce spreadsheet reports from database query results. The `NewFile()` and `SetCellValue()` API produces multi-sheet workbooks with charts and styled headers without network calls or external process invocations.

Skip if:

Your service is not in Go. Excelize has no bindings for other languages; consider one of the companion projects (Excelize for Python, Excelize for JavaScript) or a language-native library instead.

Data engineers processing user-submitted Excel uploads

`OpenFile()` reads user-submitted `.xlsx` files and exposes every row as typed Go values. The streaming reader handles files too large to load into memory row by row, which is important for upload endpoints where file size is not controlled by the service.

Skip if:

Your import format is CSV or JSON. Excelize adds a dependency you do not need if users submit structured text formats; `encoding/csv` from Go's standard library handles CSV without an extra package.

Teams building Go tools in the Microsoft Office ecosystem

Excelize supports XLAM (macro-enabled add-ins), XLSM (macro-enabled workbooks), and XLTM/XLTX templates in addition to standard XLSX. For tooling that must round-trip existing corporate spreadsheet templates, the ECMA-376 compliance and format breadth reduce file corruption risk.

Skip if:

You only need to write data rows to a simple grid. `encoding/csv` from Go's standard library handles that case with no dependency.

Report pipelines producing chart-embedded workbooks

Chart generation from worksheet data works in a few lines: set rows with `SetSheetRow`, then call `AddChart()` with a range reference and a chart type constant. The resulting file opens in Excel, LibreOffice, and Google Sheets with the chart intact, which fits automated report delivery where recipients open the file directly.

Skip if:

Your report consumers need PDF output. Excelize produces only spreadsheet file formats; a separate step is required for PDF delivery.

the problem

The problem it solves#

Excel remains the universal format for data exchange in business workflows. Go services that handle reporting, finance, or user data regularly need to produce or consume spreadsheet files, but Go's standard library has no built-in Excel support. The options without a dedicated library are unappealing: converting to CSV loses formatting, multiple sheets, and cell styles; shelling out to Python or Node adds runtime dependencies; and cloud spreadsheet APIs charge per-document fees and introduce network round-trips into what should be a local operation.

The deeper challenge is output fidelity. Business users expect formatted reports: column widths, cell styles, embedded charts, and multi-sheet workbooks. Generating raw data into a .csv file and asking recipients to import it is a workaround that breaks the moment a report format needs to change. Teams that accept this end up maintaining the data pipeline and the presentation layer in separate tools, adding fragility to every reporting workflow.

how Excelize solves it

How it solves it#

Streaming read and write API

Processes worksheets too large to hold in memory by reading and writing row by row. The streaming writer appends rows incrementally without buffering the full workbook, and the streaming reader returns rows one at a time. This is the right path for export jobs where dataset size is not bounded, such as generating reports from large database queries.

Chart generation from worksheet data

Builds charts from worksheet ranges using the `AddChart()` method with a type constant and series references. Supports clustered column, bar, line, pie, scatter, area, and 3D variants. Charts can reference worksheet data or be generated standalone. The resulting file opens with the chart intact in Excel, LibreOffice, and Google Sheets.

XLSX, XLSM, XLAM, XLTX, and XLTM format support

Reads and writes all five Office Open XML Excel variants, covering standard workbooks, macro-enabled workbooks, macro-enabled add-ins, and both template types. Compatible with files produced by Microsoft Excel 2007 and later. The implementation follows the ECMA-376 standard, which means generated files parse correctly in third-party tools that consume OOXML.

Picture insertion with scaling and offset

Inserts PNG, JPEG, and GIF images into worksheet cells using `AddPicture()`. Supports x/y pixel offsets, independent x/y scaling factors, aspect-ratio lock, and print-object flags. Multiple images can be placed in a single worksheet without corrupting the file structure.

Multi-sheet workbook management

Creates, reads, and sets the active sheet across multi-sheet workbooks. `NewSheet()` returns the sheet index for use with `SetActiveSheet()`; `SetSheetRow()` writes an entire row of mixed-type values in one call. `CoordinatesToCellName()` converts row and column integers to Excel cell references, simplifying iteration over structured data.

Cross-platform, zero external dependencies

Written in pure Go with no CGo, no system libraries, and no Microsoft Office installation required. Runs on macOS, Linux, and Windows from a single binary built with the standard Go toolchain. Install with `go get github.com/xuri/excelize/v2` after confirming Go 1.26.0 or later.

strengths · trade-offs

Strengths and trade-offs#

Strengths

  • BSD-3-Clause license with no commercial use restrictionsBSD-3-Clause places no restrictions on commercial use, redistribution, or modification. Teams can ship Excelize inside proprietary software without open-sourcing their own changes, and there are no per-developer or per-deployment licensing fees. This distinguishes it from commercial libraries like Aspose.Cells or EPPlus, which charge for production deployment.
  • Active maintenance with 21,000+ starsThe repository has 21,124 GitHub stars and 1,996 forks, with the last commit in November 2026. Official documentation is published in 12 languages, including Arabic, Chinese (simplified and traditional), English, French, German, Italian, Japanese, Korean, Portuguese, Russian, and Spanish. This breadth of documentation reduces onboarding friction for international engineering teams.
  • Streaming API for memory-bounded file processingSeparate streaming reader and writer APIs handle worksheet sizes that would exhaust memory using the standard API. The streaming writer appends rows without buffering the whole workbook; the streaming reader returns rows incrementally. This makes Excelize suitable for backend jobs that export thousands of rows from a database to Excel in a single pass.
  • ECMA-376 compliance for broad compatibilityExcelize implements the fifth edition of the ECMA-376 Office Open XML standard, the same specification Microsoft Excel uses. Files it generates round-trip correctly through Excel, LibreOffice, and Google Sheets. For tools that consume OOXML programmatically, the standard compliance reduces parsing edge cases.

Trade-offs

  • -Go-only with no official bindings for other languagesExcelize is a Go library with no official bindings for Python, Java, Node.js, or other backend languages. The project maintains separate ports for C#, JavaScript, and Python at a different repository, with their own release cadences and feature parity that may lag behind the Go version. Teams using non-Go backends cannot import the main library directly.
  • -Go 1.26.0 minimum version requirementThe current release requires Go 1.26.0 or later. Projects on older Go versions need a toolchain upgrade before adopting Excelize. For services running on pinned Go versions in containerized environments, this may require coordination with infrastructure teams before the library can be adopted.
  • -122 open issues as of November 2026The repository carries 122 open issues (excluding pull requests). For most read and write use cases this represents normal project activity, but advanced features like complex chart types or format-specific edge cases may have outstanding bugs. Reviewing the issue tracker for the specific feature before committing to it is worth the check.
versus alternatives

Excelize vs alternatives#

Excelize vs Aspose.Cells

Both Excelize and Aspose.Cells read and write Excel files for backend services, but they serve different language ecosystems and licensing models. Aspose.Cells is a commercial library for Java, .NET, Python, Node.js, and other languages; Excelize targets Go only.

FeatureExcelizeAspose.Cells
LicenseBSD-3-ClauseProprietary, per-developer
LanguageGoJava, .NET, Python, Node.js, others
StreamingYesYes
ChartsYesYes
PriceFreePaid, per-developer

Excelize is the standard choice for Go backend services that need Excel output without licensing costs. Aspose.Cells is worth considering when your team is not using Go and needs a consistent Excel API across Java and .NET services, or when you need commercial support with a vendor-backed SLA.

Excelize vs EPPlus

EPPlus is a .NET library for Excel generation with a commercial license. Teams building new Go services have Excelize as a BSD-3-Clause alternative with no licensing cost.

FeatureExcelizeEPPlus
LicenseBSD-3-ClauseCommercial
LanguageGo.NET
StreamingYesYes
ChartsYesYes
PriceFreePer-developer or site license

Excelize provides the equivalent of EPPlus's core read/write/chart functionality for Go without any licensing cost. EPPlus remains the better fit for existing .NET projects with established EPPlus integrations, or when the team needs a library in the .NET ecosystem specifically.

install · quick start

Quick start#

bash
Install Excelize as a Go module using the versioned import path.
```bash
go get github.com/xuri/excelize/v2
```
tech stack · detected from GitHub

What it's built on#

Languages
Go
frequently asked

FAQ#

Is Excelize compatible with LibreOffice and Google Sheets?

Yes. Excelize writes files using the ECMA-376 Office Open XML standard, the same format Microsoft Excel uses. LibreOffice and Google Sheets import XLSX natively. Charts, cell styles, and multi-sheet workbooks survive the round-trip in most cases. Very advanced features such as macro-enabled XLSM workbooks may render differently across applications.

How does Excelize handle large Excel files without exhausting memory?

Excelize provides a streaming API separate from its standard read/write methods. The streaming writer appends rows incrementally without holding the full workbook in memory; the streaming reader processes one row at a time. The standard API loads the full workbook, so for files with tens of thousands of rows the streaming path is the right choice for server environments.

What Go version does Excelize require?

Excelize requires Go 1.26.0 or higher. Install with go get github.com/xuri/excelize/v2. If your project uses Go modules, the versioned path ensures the major version stays explicit and prevents accidental updates to a future v3 with breaking changes.

Can I use Excelize in a commercial product?

Yes. Excelize is licensed under BSD-3-Clause, which permits use in commercial products, proprietary software, and redistribution. Attribution in your project's license notices is required by BSD-3-Clause, but there are no per-developer, per-server, or per-deployment fees.

What Excel file formats does Excelize support?

Excelize reads and writes XLSX (standard workbook), XLSM (macro-enabled workbook), XLTX (template), XLTM (macro-enabled template), and XLAM (macro-enabled add-in). These are all variants of the ECMA-376 Office Open XML standard. Generated files are compatible with Microsoft Excel 2007 and later, LibreOffice, and Google Sheets.

also worth a look

Similar open-source tools#

FckSignups

InCustomer Support

Open-source tools that work instantly, no signup required

  • 4,570 GitHub stars
  • GPL-3.0Licence GPL-3.0

Apache PDFBox

Alternative toiText 7

Open source Java library for creating and parsing PDFs

  • 3,140 GitHub stars
  • Apache-2.0Licence Apache-2.0

CleanYourTV

Featured

Alternative toATV Launcher Pro

Debloat any Android or Google TV over Wi-Fi and get an Apple TV-style home.

  • 53,395 GitHub stars
  • MIT LicenseLicence MIT License

rakazo

Featured

Alternative toGrok Bot

AI teammates you own: your keys, your model, your machine.

  • 7,478 GitHub stars
  • Apache-2.0Licence Apache-2.0

Gopeed

Alternative toInternet Download Manager

Download manager for HTTP, BitTorrent, and ed2k on every platform.

  • 27,552 GitHub stars
  • GPL-3.0Licence GPL-3.0

Rails

InWeb Development

Full-stack Ruby framework with built-in ORM, mailer, and WebSockets.

  • 59,087 GitHub stars
  • MITLicence MIT
by category

Open source tools in these categories#

617

Developer Tools

REA (Reverse Engineer Anything), Skills for Real Engineers, superpowers
290

Business & Productivity

OpenClaw, Excalidraw, RustDesk
85

Backend Development

dify, graphify, Rust

Sponsors

Inbox Zero

Alternative toSuperhuman

AI email assistant that drafts replies and clears your inbox

  • 12,942 GitHub stars
  • AGPL-3.0Licence AGPL-3.0
  • #Email

rakazo

Alternative toGrok Bot

AI teammates you own: your keys, your model, your machine.

  • 7,478 GitHub stars
  • Apache-2.0Licence Apache-2.0
  • #AI Agents

SnitchFeed

Live monitoring on LinkedIn, X, Reddit & more. Agentic social listening for startups.

Marketing & Growth

Advertise your product

New open source projects by email

The projects we add and every new guide. Free, unsubscribe any time.

Find open source alternatives to paid software

/
  • Claude Code to OpenCode
  • Jira to Windshift
  • Notion to AppFlowy
  • Slack to Mattermost
  • Linear to GitLab
  • Wispr Flow to Handy
  • Arc to Zen Browser
  • CapCut to Concat
  • Grok Bot to rakazo
  • Superhuman to Inbox Zero
  • Airtable to AITable
  • Muse to OpenClaw
  • Railway to Coolify
  • GitHub Copilot to Cline
  • Datadog to Netdata
  • Confluence to Wiki.js
  • Microsoft Teams to Rocket.Chat
  • 1Password to KeePassXC
  • Firebase to Supabase
  • Pinecone to Qdrant
  • Zapier to n8n
  • Devin AI to OpenHands
  • Asana to Leantime
  • Contentful to Strapi
  • Claude Code to OpenCode
  • Jira to Windshift
  • Notion to AppFlowy
  • Slack to Mattermost
  • Linear to GitLab
  • Wispr Flow to Handy
  • Arc to Zen Browser
  • CapCut to Concat
  • Grok Bot to rakazo
  • Superhuman to Inbox Zero
  • Airtable to AITable
  • Muse to OpenClaw
  • Railway to Coolify
  • GitHub Copilot to Cline
  • Datadog to Netdata
  • Confluence to Wiki.js
  • Microsoft Teams to Rocket.Chat
  • 1Password to KeePassXC
  • Firebase to Supabase
  • Pinecone to Qdrant
  • Zapier to n8n
  • Devin AI to OpenHands
  • Asana to Leantime
  • Contentful to Strapi