Excelize reads and writes modern Excel workbooks from Go. It suits backend services that accept customer spreadsheets or generate formatted reports, with charts and clickable links alongside the data.

  • Read existing workbooks. Open a file, inspect individual cells, or iterate worksheet data. Supported formats include XLSX, XLSM, XLAM, XLTM, and XLTX.
  • Build useful exports. Create sheets, populate cells, add images and charts, and apply formatting. The cell documentation covers real external hyperlinks separately from displayed text.
  • Write large sheets incrementally. The streaming writer can spill buffered data to temporary disk files once chunks exceed 16 MB.
  • Use the documented module path. Install with go get github.com/xuri/excelize/v2, despite the repository living under qax-os. The current README and go.mod require Go 1.26.0 or later.

The library is pure Go, so spreadsheet generation can live inside the application without driving a desktop Excel session. Its BSD-3-Clause licence allows redistribution and modification with the required notices.

Caveat: streaming writes require ascending row numbers and a final Flush(). You cannot mix normal and streaming writes on the same worksheet, so choose the write strategy before building the export.

Discovered through this r/BestGitHubRepos thread. Capabilities and requirements come from the project’s README and first-party documentation.