Reading Workbooks
Opening a File
wb, err := werkbook.Open("report.xlsx")
if err != nil {
log.Fatal(err)
}
Reading Cell Values
Read individual cells by A1 reference:
sheet := wb.Sheet("Sheet1")
v, err := sheet.GetValue("A1")
if err != nil {
log.Fatal(err)
}
fmt.Println(v.Raw()) // underlying Go value
fmt.Println(v.Type) // werkbook.TypeString, TypeNumber, etc.
fmt.Println(v.IsEmpty()) // true if cell is empty
Checking Value Types
Use the Type field to handle different value types:
v, _ := sheet.GetValue("A1")
switch v.Type {
case werkbook.TypeNumber:
fmt.Printf("Number: %f\n", v.Number)
case werkbook.TypeString:
fmt.Printf("String: %s\n", v.String)
case werkbook.TypeBool:
fmt.Printf("Bool: %t\n", v.Bool)
case werkbook.TypeError:
fmt.Printf("Error: %s\n", v.String)
case werkbook.TypeEmpty:
fmt.Println("(empty)")
}
Reading Formulas
formula, _ := sheet.GetFormula("D5")
if formula != "" {
fmt.Println("Formula:", formula) // e.g. "SUM(D2:D4)"
}
// GetValue on a formula cell returns the computed result
value, _ := sheet.GetValue("D5")
fmt.Println("Result:", value.Raw())
Iterating Over Rows
Use the Rows() iterator to walk through all non-empty rows:
for row := range sheet.Rows() {
fmt.Printf("Row %d:\n", row.Num())
for _, cell := range row.Cells() {
colName := werkbook.ColumnNumberToName(cell.Col())
fmt.Printf(" %s%d = %v\n", colName, row.Num(), cell.Value().Raw())
}
}
Sheet Dimensions
maxRow := sheet.MaxRow() // highest row number with data, or 0
maxCol := sheet.MaxCol() // highest column number with data, or 0
fmt.Printf("Data range: A1:%s%d\n",
werkbook.ColumnNumberToName(maxCol), maxRow)
Listing Sheets
for _, name := range wb.SheetNames() {
sheet := wb.Sheet(name)
fmt.Printf("Sheet %q: %d rows, %d cols\n",
name, sheet.MaxRow(), sheet.MaxCol())
}
Reading Styles
style, _ := sheet.GetStyle("A1")
if style != nil {
if style.Font != nil {
fmt.Printf("Font: %s, size %.0f\n", style.Font.Name, style.Font.Size)
fmt.Printf("Bold: %t\n", style.Font.Bold)
}
if style.Fill != nil {
fmt.Printf("Fill color: #%s\n", style.Fill.Color)
}
}
Printing a Sheet
For quick debugging, print a human-readable table:
sheet.PrintTo(os.Stdout)