LLM Use with AI

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.