Xlsx
Fast and reliable way to work with Microsoft Excel™ [xlsx] files in Golang
Install / Use
/learn @plandem/XlsxREADME
Xlsx2Go
package main
import (
"github.com/plandem/xlsx"
"github.com/plandem/xlsx/format/conditional"
"github.com/plandem/xlsx/format/conditional/rule"
"github.com/plandem/xlsx/format/styles"
)
func main() {
xl := xlsx.New()
defer xl.Close()
//create a new sheet
sheet := xl.AddSheet("The first sheet")
//access by ref
cell := sheet.CellByRef("A2")
//set value
cell.SetValue("Easy Peasy")
//set cool styles
cell.SetStyles(styles.New(
styles.Font.Bold,
styles.Font.Color("#ff0000"),
styles.Fill.Type(styles.PatternTypeSolid),
styles.Fill.Color("#ffff00"),
styles.Border.Color("#009000"),
styles.Border.Type(styles.BorderStyleMedium),
))
//add comment
cell.SetComment("No Comment!")
//add hyperlink
sheet.CellByRef("A4").SetValueWithHyperlink("wikipedia", "http://google.com")
//merge cells
sheet.RangeByRef("A6:A7").Merge()
sheet.CellByRef("A6").SetValue("merged cell")
//iterating
for iRow := 1; iRow < 7; iRow++ {
//access by indexes
cell := sheet.Cell(1, iRow)
cell.SetValue(iRow)
}
//add conditional formatting
sheet.AddConditional(conditional.New(
conditional.AddRule(
rule.Value.Between(1, 3, styles.New(
styles.Font.Bold,
styles.Font.Color("#ff0000"),
)),
),
conditional.AddRule(
rule.IconSet.Type(rule.IconSetType3Arrows),
),
), "B2:B7")
xl.SaveAs("./foo.xlsx")
}
Documentation
Roadmap
- [ ] sheet: copy
- [ ] sheet: custom filters
- [x] sheet: streaming
- [x] merged cells: merge/split for ranges, cols, rows
- [x] hyperlinks: for cells, ranges, cols, rows
- [x] range: copy
- [x] row: copy
- [x] col: copy
- [x] cell: comments
- [ ] cell: formulas
- [x] cell: typed getter/setter for values
- [x] other: conditional formatting
- [x] other: rich texts
- [ ] other: drawing
- [ ] other: more optimization
- [ ] other: more tests
Contribution
- To prevent mess, sources have strict separation of markup and functionality. Document that describes OOXML is quite huge (about 6K pages), but the same time - functionality is not.
- All markup resides inside of 'ml' folders, only marshal/unmarshal is allowed here, no any functionality.
- Not every 'ml object' has related 'functional object' and vice versa.
- If you want some functionality, then wrap 'ml object' and do what you want.
OOXML edition
XML is compliant with part 1 of the 5th edition of the ECMA-376 Standard for Office Open XML
License
Related Skills
node-connect
348.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
xurl
348.5kA CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.
frontend-design
109.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
348.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
