XLSX
Class methods
build(io : IO, sheets : Array(String), & : SheetBuilder -> )
Span-aware build across named sheets. Yields a SheetBuilder once per
sheet name, then writes the assembled workbook to io.
XLSX.build(io, sheets: ["Sheet1", "Sheet2"]) do |sheet|
sheet.rows(1..5) { |row, row_id| row[1] = "data #{row_id}" }
end
NOTE: Writing is not yet implemented — raises NotImplementedError
after all sheet blocks have been evaluated.
build(io : IO, template : IO, & : SheetBuilder -> )
Template-based build. Reads template, pre-populates one SheetBuilder
per sheet, yields each in document order, then writes the result to io.
The template IO is not modified.
File.open("template.xlsx") do |template|
File.open("output.xlsx", "w") do |out|
XLSX.build(out, template: template) do |sheet|
sheet.append_row("2026-04-19", 99.5, "USD")
end
end
end
build(io : IO, & : Builder -> )
CSV-compatible build. Yields a Builder; calls close after the block.
XLSX.build(io) do |b|
b.row("name", "age")
b.row("alice", 30.0)
end