Skip to content

tealeg/xlsx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Feb 18, 2025
df122de · Feb 18, 2025
Feb 18, 2025
Apr 17, 2023
Aug 5, 2024
Oct 30, 2019
Apr 1, 2016
Aug 22, 2017
May 14, 2020
Sep 13, 2023
Feb 17, 2025
Nov 18, 2024
Jun 6, 2023
Nov 18, 2024
Jun 9, 2024
Mar 8, 2020
Nov 18, 2024
Jun 7, 2023
Oct 10, 2019
Sep 9, 2023
Jan 15, 2025
Jan 15, 2025
Oct 31, 2014
Mar 2, 2018
Dec 3, 2024
Feb 18, 2025
Nov 18, 2024
Mar 26, 2020
Jun 6, 2023
Nov 4, 2019
Jun 6, 2023
Aug 1, 2023
Aug 1, 2023
Mar 15, 2015
Nov 18, 2024
Nov 18, 2024
Nov 18, 2024
Apr 15, 2021
Jun 6, 2023
Nov 18, 2024
Nov 3, 2024
Nov 3, 2024
Mar 24, 2020
Sep 9, 2023
Jun 6, 2023
Nov 18, 2024
Jan 15, 2025
Jan 15, 2025
Mar 9, 2021
Sep 13, 2024
Apr 3, 2019
Jun 7, 2023
Apr 18, 2015
Sep 13, 2023
Dec 3, 2024
Feb 17, 2025
Nov 18, 2024
Feb 3, 2015
Sep 9, 2023
Jun 18, 2020
Sep 9, 2023
Nov 18, 2024
Sep 12, 2024
Mar 15, 2015
Dec 3, 2024
Dec 3, 2024
Jan 15, 2025
Sep 9, 2023

Repository files navigation

XLSX

https://github.com/tealeg/xlsx/actions/workflows/go.yml/badge.svg?branch=master https://codecov.io/gh/tealeg/xlsx/branch/master/graph/badge.svg https://pkg.go.dev/badge/github.com/tealeg/xlsx/v3.svg https://img.shields.io/badge/license-bsd-orange.svg

Introduction

xlsx is a library to simplify reading and writing the XML format, used by versions of Microsoft Excel since 2002, in Go programs.

Current status

We’re back! The will of the people has spoken. I tried to slowly let this die, but the patches keep coming in, and people keep expressing frustration at the alternatives. So, the fate of this library lies with you all. I will review patches, make releases, etc. I don’t plan to take on any new development work here myself, but I will attempt to support you if you do.

Tutorial

If you’d like an introduction to this project try the tutorial.

Different versions of this project

Prior to v1.0.0

You don’t want these versions ;-)

It’s hard to remember exactly, but work on this library started within a month of the first public announcement of Go, now more than a decade ago. It was essentially a quick hack to get data out of XLSX files at my workplace. Nobody but me relied on it, so it was fine to use this brand new language for this task. Somewhat later I decided to share the code, and I know it was well established as an open-source project by the time I left that job in late 2011.

Although I did do some “release” tags, versioning in Go in the early days relied on tagging your code with the name of the Go release (i.e. go1.2) and then `go get` would fetch that tag, if it existed, and if not, it’d grab the master branch.

Version 1.x.x

Version 1.0.0 was tagged in 2017 to support vendoring tools.

As of October 8th, 2019, I’ve branched off v1.x.x maintenance work from master. The master branch now tracks v2.x.x.

If you have existing code, can live with the issues in the 1.x.x codebase, and don’t want to update your code to use a later version, then you can stick to these releases. I mostly won’t be touching this code, but if something really important comes up, let me know.

Version 2.x.x

Version 2.0.0 introduced breaking changes in the API.

The scope of these changes included the way `Col` elements and `DataValidation` works, as these aspects have been built around incorrect models of the underlying XLSX format.

See the https://github.com/tealeg/xlsx/milestone/5 for details.

Version 2.0.1 was tagged purely because 2.0.0 wasn’t handled correctly with regards to how go modules work. It isn’t possible to use 2.0.0 from a Go Modules based project.

Version 3.x.x

Version 3.0.0 introduces some more breaking changes in the API. All methods that can return an `xlsx.File` struct now accept zero, one or many `xlsx.FileOption` functions as their final arguments. These can be used to modify the behaviour of the resultant struct - in particular they replace the `…WithRowLimit` variants of those methods with the result of calling `xlsx.RowLimit` and they add the ability to define a custom backing store for the spreadsheet data to be held in whilst processing.

StreamFileBuilder has been dropped from this version of the library as it has become difficult to maintain.

Full API docs

The full API docs can be viewed using go’s built in documentation tool, or online at pkg.go.dev.

Contributing

Please be patient, maintaining XLSX doesn’t pay anyone’s salary (to my knowledge).

If you’d like to propose a change please ensure the following:

Eat a peach - Geoff