Workbook Operations
Rename, Hide, and Delete Sheets
wb := werkbook.New(werkbook.FirstSheet("Summary"))
data, _ := wb.NewSheet("Data")
_ = data
if err := wb.SetSheetName("Data", "Transactions"); err != nil {
log.Fatal(err)
}
if err := wb.SetSheetVisible("Transactions", false); err != nil {
log.Fatal(err)
}
fmt.Println(wb.Sheet("Transactions").Visible()) // false
if err := wb.DeleteSheet("Transactions"); err != nil {
log.Fatal(err)
}
You cannot delete the last remaining sheet.
Work Without Temporary Files
Use WriteTo, OpenReader, or OpenReaderAt when you want to stream workbooks through APIs, tests, or background jobs:
var buf bytes.Buffer
if err := wb.WriteTo(&buf); err != nil {
log.Fatal(err)
}
copy, err := werkbook.OpenReader(&buf)
if err != nil {
log.Fatal(err)
}
fmt.Println(copy.SheetNames())
If you already have an io.ReaderAt, use OpenReaderAt to avoid copying again.
Remove Rows and Preserve Workbook State
sheet := wb.Sheet("Summary")
if err := sheet.RemoveRow(5); err != nil {
log.Fatal(err)
}
RemoveRow shifts following rows up by one and rebuilds formula state so dependent formulas and merge metadata stay aligned.
Merge Cells
if err := sheet.MergeCell("A1", "D1"); err != nil {
log.Fatal(err)
}
for _, mr := range sheet.MergeCells() {
fmt.Println(mr.Start, mr.End)
}
MergeCells() returns the registered merged ranges on the sheet.
Control Workbook Calculation Settings
Excel stores calculation preferences in workbook metadata. werkbook exposes those settings through CalcProperties:
wb.SetCalcProperties(werkbook.CalcProperties{
Mode: "manual",
FullCalcOnLoad: true,
ForceFullCalc: true,
})
fmt.Println(wb.CalcProperties())
This is useful when you want Excel to fully recalculate a workbook after it opens.
Inspect Direct Formula Dependencies
points, ranges, err := wb.Precedents("Summary", "D10")
if err != nil {
log.Fatal(err)
}
deps, err := wb.DirectDependents("Summary", "B2")
if err != nil {
log.Fatal(err)
}
fmt.Println(len(points), len(ranges), len(deps))
These helpers only expose direct edges. They are meant for auditing and tooling, not full graph traversal by themselves.