unioffice is a pure Go library for creating and processing Office Open XML documents in Word, Excel, and PowerPoint formats.
The library addresses the need for native Go support when working with .docx, .xlsx, and .pptx files without external dependencies. It implements the ECMA-376 standard and provides both read and write capabilities across all three Office document types. For Word documents, it supports text formatting, images, tables, and conversion to PDF. For Excel spreadsheets, it offers cell formatting including conditional formatting, cell validation with dropdown controls, formula evaluation with over 100 supported functions, embedded images, and all chart types. PowerPoint support includes creation from templates, textboxes, and shapes.
The tool suits Go projects that need to generate or manipulate Office documents programmatically without relying on external services or the Office applications themselves. It performs well for spreadsheet operations, creating 30,000 rows with 100 columns each in under four seconds and reading such files in approximately nine seconds. The primary trade-off is binary size, as the library bundles generated structs and serialization code for all three document formats. The project requires a commercial license key to operate, available through a free tier metered API.
Development activity shows consistent maintenance with regular updates to the codebase. The project maintains comprehensive example repositories demonstrating common use cases across all three document types. Bug fixes and feature additions are addressed through pull requests and issue tracking. The library continues to expand formula support and improve compatibility with the Office Open XML specification.