#xlsx

    The core package for reading and writing Microsoft Excel (XLSX) files. This package contains all the main types and functionality for manipulating Excel workbooks.

    #Core Types

    #Workbook

    Workbook is the central container that owns all sheets and global state:

    • Sheets: sheets : Array[Worksheet], chart_sheets : Array[ChartSheet]
    • Styles: styles : Array[Style], conditional_styles : Array[Style]
    • Defined names: defined_names : Array[DefinedName]
    • Document properties: core_properties, app_properties, custom_properties
    • Protection: workbook_protection

    #Worksheet

    Worksheet represents a single sheet and contains:

    • Cells: cells : Array[Cell] with row/column coordinates
    • Merged cells: merged_cells : Array[String]
    • Features: tables, charts, images, data validations, conditional formats, etc.
    • Layout: page margins, page layout, header/footer
    • Protection: sheet_protection

    #Cell

    Cell stores cell data:

    • reference : String - Cell reference like "A1"
    • row : Int, col : Int - 1-indexed coordinates
    • value : String - Cell value as string
    • value_type : CellValueType - String, Number, Bool, or Error
    • formula : String? - Optional formula
    • style_id : Int - Index into workbook styles

    #Style

    Style defines cell formatting:

    • font : Font? - Font styling
    • fill : Fill? - Background fill
    • border : Array[Border]? - Cell borders
    • alignment : Alignment? - Text alignment
    • number_format : NumberFormat? - Number formatting
    • protection : Protection? - Cell protection

    #Basic Usage

    #Creating Workbooks

    ///|
    test "create workbook" {
    // Empty workbook
    let wb = @xlsx.Workbook::new()
    inspect(wb.sheets().length(), content="0")

    // Add a sheet
    ignore(wb.add_sheet("Data"))
    debug_inspect(wb.get_sheet_list(), content="[\"Data\"]")
    }

    #Cell Operations

    ///|
    test "cell operations" {
    let wb = @xlsx.Workbook::new()
    let sheet = wb.add_sheet("Test")

    // Set cell by reference
    sheet.set_cell("A1", "Hello")
    sheet.set_cell("B1", "World")

    // Set cell by row/column (1-indexed)
    sheet.set_cell_rc(2, 1, "Row 2, Col 1")

    // Read cells
    debug_inspect(sheet.get_cell("A1"), content="Some(\"Hello\")")
    debug_inspect(sheet.get_cell_rc(2, 1), content="Some(\"Row 2, Col 1\")")

    // Set typed values
    sheet.set_cell_value("C1", Numeric(42.5))
    sheet.set_cell_value("D1", Bool(true))
    debug_inspect(sheet.get_cell_value_raw("C1"), content="Some(Numeric(42.5))")
    }

    #Row and Column Operations

    ///|
    test "row and column operations" {
    let wb = @xlsx.Workbook::new()
    let sheet = wb.add_sheet("Grid")

    // Set entire row (1-indexed)
    sheet.set_row(1, ["A", "B", "C", "D"])

    // Set entire column (1-indexed)
    sheet.set_col(1, ["1", "2", "3"])

    // Read row/column
    debug_inspect(sheet.get_row(1), content="[\"1\", \"B\", \"C\", \"D\"]")
    debug_inspect(sheet.get_col(1), content="[\"1\", \"2\", \"3\"]")

    // Row/column dimensions
    inspect(sheet.max_row(), content="3")
    inspect(sheet.max_col(), content="4")
    }

    #Formulas

    ///|
    test "formulas" {
    let wb = @xlsx.Workbook::new()
    let sheet = wb.add_sheet("Calc")
    sheet.set_cell("A1", "10")
    sheet.set_cell("A2", "20")
    sheet.set_cell("A3", "30")

    // Formula with cached value
    sheet.set_cell_formula("A4", "SUM(A1:A3)", value="60")
    debug_inspect(sheet.get_cell_formula("A4"), content="Some(\"SUM(A1:A3)\")")

    // Calculate formula
    inspect(wb.calc_cell_value("Calc", "A4"), content="60")

    // Array formula
    let opts = @xlsx.FormulaOpts::array("B1:B3")
    sheet.set_cell_formula_opts("B1", "{A1:A3*2}", opts~, value="20")
    }

    #Styling

    #Creating Styles

    ///|
    test "creating styles" {
    let wb = @xlsx.Workbook::new()
    let sheet = wb.add_sheet("Styled")

    // Create style with font
    let bold_style = @xlsx.Style::font(
    @xlsx.Font::with_values(bold=true, size=14.0),
    )
    let bold_id = wb.add_style(bold_style)

    // Create style with fill
    let yellow_fill = @xlsx.Style::fill(@xlsx.Fill::solid("FFFF00"))
    let fill_id = wb.add_style(yellow_fill)

    // Combine multiple style elements
    let combined = @xlsx.Style::new()
    .with_font(@xlsx.Font::with_values(bold=true, color="FF0000"))
    .with_fill(@xlsx.Fill::solid("E0E0E0"))
    .with_alignment(
    @xlsx.Alignment::with_values(horizontal="center", wrap_text=true),
    )
    let combined_id = wb.add_style(combined)

    // Apply style to cell
    sheet.set_cell("A1", "Bold Text")
    sheet.set_cell_style("A1", bold_id)
    sheet.set_cell("A2", "Filled")
    sheet.set_cell_style("A2", fill_id)
    sheet.set_cell("A3", "Combined")
    sheet.set_cell_style("A3", combined_id)
    }

    #Font Options

    ///|
    test "font options" {
    let font = @xlsx.Font::with_values(
    bold=true,
    italic=true,
    size=12.0,
    color="0000FF", // Blue
    underline="single",
    strike=true,
    )
    debug_inspect(font.bold, content="Some(true)")
    debug_inspect(font.size, content="Some(12)")
    }

    #Fill Options

    ///|
    test "fill options" {
    // Solid fill
    let solid = @xlsx.Fill::solid("FF0000") // Red
    debug_inspect(solid.typ, content="Some(\"pattern\")")

    // Pattern fill
    ignore(@xlsx.Fill::pattern(pattern=17, color="00FF00"))

    // Gradient fill
    ignore(@xlsx.Fill::gradient("FF0000", "0000FF", shading=1))
    }

    #Border Options

    ///|
    test "border options" {
    // Create borders for all sides
    let borders = [
    @xlsx.Border::with_values("left", color="000000", style=1),
    @xlsx.Border::with_values("right", color="000000", style=1),
    @xlsx.Border::with_values("top", color="000000", style=1),
    @xlsx.Border::with_values("bottom", color="000000", style=2), // Thicker bottom
    ]
    let style = @xlsx.Style::border(borders)
    debug_inspect(style.border.map(fn(b) { b.length() }), content="Some(4)")
    }

    #Number Formats

    ///|
    test "number formats" {
    // Built-in number format (index 2 = "0.00")
    ignore(@xlsx.Style::builtin_number_format(2))

    // Custom number format
    ignore(@xlsx.Style::number_format("$#,##0.00"))

    // Percentage
    ignore(@xlsx.Style::builtin_number_format(10)) // "0.00%"
    }

    #Data Validation

    ///|
    test "data validation" {
    let wb = @xlsx.Workbook::new()
    let sheet = wb.add_sheet("Validation")

    // Dropdown list validation
    sheet.add_data_validation_list("A1:A10", ["Option 1", "Option 2", "Option 3"])

    // Range validation with DataValidation struct
    let dv = @xlsx.DataValidation::new(true) // allow_blank=true
    dv.set_sqref("B1:B10")
    dv.set_range(IntValue(1), IntValue(100), Whole, Between)
    dv.set_error(Stop, "Invalid", "Enter 1-100")
    dv.set_input("Hint", "Enter a number between 1 and 100")
    sheet.add_data_validation(dv)
    }

    #Conditional Formatting

    ///|
    test "conditional formatting" {
    let wb = @xlsx.Workbook::new()
    let sheet = wb.add_sheet("CF")

    // Create a style for conditional formatting
    let red_fill = @xlsx.Style::fill(@xlsx.Fill::solid("FF0000"))
    let cf_style_id = wb.new_conditional_style(red_fill)

    // Cell value condition
    let cf = @xlsx.ConditionalFormatOptions::new("cell")
    cf.set_criteria(">")
    cf.set_value("100")
    cf.set_format(Some(cf_style_id))
    sheet.set_conditional_format("A1:A100", [cf])
    }

    #Charts

    ///|
    test "charts" {
    let wb = @xlsx.Workbook::new()
    let sheet = wb.add_sheet("ChartData")

    // Add data
    sheet.set_row(1, ["Category", "Value"])
    sheet.set_row(2, ["A", "10"])
    sheet.set_row(3, ["B", "20"])
    sheet.set_row(4, ["C", "30"])

    // Create chart series
    let series = @xlsx.ChartSeries::new(
    "ChartData!$B$2:$B$4", // values
    "ChartData!$A$2:$A$4", // categories
    name="Sales",
    )

    // Create chart options
    let chart = @xlsx.ChartOptions::new(Bar)
    chart.series.push(series)
    chart.title = "Sales by Category"
    chart.dimension = @xlsx.ChartDimension::with_values(480, 300)

    // Add chart to sheet
    sheet.add_chart_with_options("E1", chart)
    }

    #Tables

    ///|
    test "tables" {
    let wb = @xlsx.Workbook::new()
    let sheet = wb.add_sheet("TableSheet")

    // Add data for table
    sheet.set_row(1, ["Name", "Age", "City"])
    sheet.set_row(2, ["Alice", "30", "NYC"])
    sheet.set_row(3, ["Bob", "25", "LA"])

    // Add table with range reference and column headers
    let table = sheet.add_table(
    "A1:C3", // range reference
    "Table1", // table name
    ["Name", "Age", "City"], // column headers
    display_name="People",
    style_name="TableStyleMedium2",
    show_row_stripes=true,
    )
    inspect(table.name, content="Table1")
    }

    #Merged Cells

    ///|
    test "merged cells" {
    let wb = @xlsx.Workbook::new()
    let sheet = wb.add_sheet("Merge")

    // Set value first
    sheet.set_cell("A1", "Merged Header")

    // Merge cells
    sheet.merge_cells("A1:D1")

    // Get merged ranges
    debug_inspect(sheet.merged_cells().to_owned(), content="[\"A1:D1\"]")

    // Unmerge
    sheet.unmerge_cells("A1:D1")
    debug_inspect(sheet.merged_cells().to_owned(), content="[]")
    }

    ///|
    test "hyperlinks" {
    let wb = @xlsx.Workbook::new()
    let sheet = wb.add_sheet("Links")

    // External hyperlink
    sheet.set_cell("A1", "Visit Example")
    sheet.set_cell_hyperlink(
    "A1",
    "https://example.com",
    External,
    display="Example Site",
    tooltip="Click to visit",
    )

    // Internal link to another cell
    sheet.set_cell("A2", "Go to Data")
    sheet.set_cell_hyperlink("A2", "Sheet2!A1", Location)

    // Enumerate full typed records, optionally filtered by hyperlink kind.
    inspect(sheet.get_hyperlinks().length(), content="2")
    inspect(sheet.get_hyperlinks(link_type=External).length(), content="1")
    }

    Mutation rejects empty targets, XML-illegal text, and unsafe or unknown absolute URI schemes. Absolute external targets allow http, https, mailto, ftp, ftps, sftp, news, tel, sms, file, about, and ppaction; forward-slash relative external paths remain supported. A hyperlink set on any cell in a merged range is addressed consistently through the range's top-left anchor for set, get, and remove.

    #Sheet Operations

    ///|
    test "sheet operations" {
    let wb = @xlsx.Workbook::new()
    ignore(wb.add_sheet("Sheet1"))
    ignore(wb.add_sheet("Sheet2"))
    ignore(wb.add_sheet("Sheet3"))

    // Get sheet by name
    guard wb.sheet("Sheet1") is Some(sheet1) else { return }
    sheet1.set_cell("A1", "OK")

    // Rename sheet
    wb.set_sheet_name("Sheet1", "Data")
    debug_inspect(
    wb.get_sheet_list(),
    content="[\"Data\", \"Sheet2\", \"Sheet3\"]",
    )

    // Hide sheet
    wb.set_sheet_visible("Sheet3", false)
    inspect(wb.get_sheet_visible("Sheet3"), content="false")

    // Delete sheet
    wb.delete_sheet("Sheet2")
    debug_inspect(wb.get_sheet_list(), content="[\"Data\", \"Sheet3\"]")

    // Set active sheet
    wb.set_active_sheet(1)
    inspect(wb.active_sheet_index(), content="1")
    }

    #Row/Column Visibility and Dimensions

    ///|
    test "row column dimensions" {
    let wb = @xlsx.Workbook::new()
    let sheet = wb.add_sheet("Dims")

    // Set row height
    sheet.set_row_height(1, 30.0)
    debug_inspect(sheet.get_row_height(1), content="Some(30)")

    // Set column width
    sheet.set_col_width(1, 20.0)
    debug_inspect(sheet.get_col_width(1), content="Some(20)")

    // Hide row
    sheet.set_row_visible(2, false)
    inspect(sheet.row_visible(2), content="false")

    // Hide column
    sheet.set_col_visible(3, false)
    inspect(sheet.col_visible(3), content="false")
    }

    #Sheet Protection

    ///|
    test "sheet protection" {
    let wb = @xlsx.Workbook::new()
    let sheet = wb.add_sheet("Protected")

    // Protect sheet with options
    let opts = @xlsx.SheetProtectionOptions::with_values(
    password="secret",
    format_cells=false, // Prevent formatting
    insert_rows=false, // Prevent inserting rows
    delete_rows=false, // Prevent deleting rows
    )
    sheet.protect_sheet(opts)

    // Check protection
    debug_inspect(
    sheet.sheet_protection().map(fn(p) { p.sheet }),
    content="Some(true)",
    )

    // Unprotect
    sheet.unprotect_sheet(password="secret")
    }

    #Page Layout

    ///|
    test "page layout" {
    let wb = @xlsx.Workbook::new()
    let sheet = wb.add_sheet("Print")

    // Set page margins
    let margins = @xlsx.PageLayoutMarginsOptions::with_values(
    top=1.0,
    bottom=1.0,
    left=0.75,
    right=0.75,
    header=0.5,
    footer=0.5,
    )
    sheet.set_page_margins(Some(margins))

    // Set page layout
    let layout = @xlsx.PageLayoutOptions::with_values(
    orientation="landscape",
    size=9, // A4
    fit_to_width=1,
    fit_to_height=0, // Auto
    )
    sheet.set_page_layout(Some(layout))

    // Set header/footer
    let hf = @xlsx.HeaderFooterOptions::with_values(
    odd_header="&C&\"Arial,Bold\"Report Title",
    odd_footer="&LPage &P of &N&R&D",
    )
    sheet.set_header_footer(Some(hf))
    }

    #Streaming API

    For large files, use the streaming API to write rows in order:

    ///|
    test "stream writer" {
    let wb = @xlsx.Workbook::new()
    ignore(wb.add_sheet("BigData"))

    // Create stream writer
    let sw = wb.new_stream_writer("BigData")

    // Set column widths (must be before writing rows)
    sw.set_col_width(1, 3, 15.0)

    // Write rows in order
    sw.set_row("A1", ["Header1", "Header2", "Header3"])
    sw.set_row("A2", ["Data1", "Data2", "Data3"])
    sw.set_row("A3", ["More", "Data", "Here"])

    // Merge cells
    sw.merge_cell("D1", "F1")

    // Must flush when done
    sw.flush()
    }

    #Reading Workbooks

    ///|
    test "read workbook" {
    // Create and write a workbook
    let wb = @xlsx.Workbook::new()
    let sheet = wb.add_sheet("Test")
    sheet.set_cell("A1", "Hello")
    sheet.set_cell("A2", "World")
    let bytes = @xlsx.write(wb)

    // Read it back
    let loaded = @xlsx.read(bytes)
    debug_inspect(loaded.get_sheet_list(), content="[\"Test\"]")
    debug_inspect(loaded.get_cell("Test", "A1"), content="Some(\"Hello\")")
    debug_inspect(loaded.get_cell("Test", "A2"), content="Some(\"World\")")
    }

    #Embedded Cell Images

    get_pictures returns the images anchored at a cell, including the modern embedded "in-cell" images that are not part of the drawing layer: WPS Office DISPIMG images, rich-value "Place in cell" images, and images inserted by the IMAGE() function. They are read from the xl/richData/* and xl/cellimages.xml parts on open.

    ///|
    async test "read the images anchored at a cell" {
    let workbook = @mbtexcel.open_file("with_images.xlsx")
    let pictures = workbook.get_pictures("Sheet1", "A1")
    for picture in pictures {
    println("\{picture.extension} \{picture.data.length()} bytes")
    }
    }

    #Dates and Times

    Store a ZonedDateTime or Duration directly; the cell is written as an Excel serial number with an appropriate default number format.

    ///|
    test "typed date and duration cells" {
    let wb = @xlsx.Workbook::new()
    ignore(wb.add_sheet("Sheet1"))

    // A date is stored as a whole-number serial (2024-07-03 -> 45476).
    wb.set_cell_time("Sheet1", "A1", @time.date_time(2024, 7, 3))
    debug_inspect(
    wb.get_cell("Sheet1", "A1"),
    content=(
    #|Some("45476")
    ),
    )

    // A duration is stored as a fraction of a day (90 minutes -> 0.0625).
    wb.set_cell_duration("Sheet1", "A2", @time.Duration::of(minutes=90))
    debug_inspect(
    wb.get_cell("Sheet1", "A2"),
    content=(
    #|Some("0.0625")
    ),
    )
    }

    #Package Validation

    validate_ooxml_package runs fast, dependency-free structural checks on serialized workbook bytes — content-type coverage for every part, relationship-target integrity, presence of the required core parts, and well-formed part names. These are the package-level problems that trigger Excel's "we found a problem" repair dialog. An empty result means the package is well-formed.

    ///|
    test "validate package" {
    let wb = @xlsx.Workbook::new()
    ignore(wb.add_sheet("Sheet1"))
    wb.set_cell("Sheet1", "A1", "hello")
    debug_inspect(@xlsx.validate_ooxml_package(@xlsx.write(wb)), content="[]")
    }

    #Error Handling

    All operations that can fail raise XlsxError:

    ///|
    test "error handling" {
    let wb = @xlsx.Workbook::new()

    // Try to get non-existent sheet
    let result : Result[Int, Error] = Ok(wb.get_sheet_index("Missing")) catch {
    e => Err(e)
    }
    debug_inspect(result, content="Ok(-1)")

    // Invalid cell reference
    let sheet = wb.add_sheet("Test")
    let bad_ref : Result[Unit, Error] = Ok(sheet.set_cell("123", "value")) catch {
    e => Err(e)
    }
    guard bad_ref is Err(_) else { return }
    }

    #Cell Reference Utilities

    ///|
    test "cell reference utilities" {
    // Split cell name
    debug_inspect(@xlsx.split_cell_name("AB123"), content="(\"AB\", 123)")

    // Join cell name
    inspect(@xlsx.join_cell_name("AB", 123), content="AB123")

    // Coordinates (1-indexed)
    debug_inspect(@xlsx.cell_name_to_coordinates("C5"), content="(3, 5)")
    inspect(@xlsx.coordinates_to_cell_name(3, 5), content="C5")

    // Absolute references
    inspect(@xlsx.coordinates_to_cell_name(3, 5, abs=true), content="$C$5")

    // Column conversion
    inspect(@xlsx.column_name_to_number("AA"), content="27")
    inspect(@xlsx.column_number_to_name(27), content="AA")
    }

    #Color Utilities

    ///|
    test "color utilities" {
    // RGB to HSL
    let (h, _, _) = @xlsx.rgb_to_hsl(255, 0, 0) // Red
    inspect(h < 1.0, content="true") // Hue near 0

    // HSL to RGB
    let (r, _, _) = @xlsx.hsl_to_rgb(0.0, 1.0, 0.5) // Red
    inspect(r, content="b'\\xFF'") // 255

    // Theme color with tint
    let tinted = @xlsx.theme_color("FF0000", 0.5)
    inspect(tinted.length(), content="8")
    }

    #Defined Names

    ///|
    test "defined names" {
    let wb = @xlsx.Workbook::new()
    ignore(wb.add_sheet("Data"))

    // Create defined name
    let dn = @xlsx.DefinedName::new(
    "SalesRange",
    "Data!$A$1:$D$100",
    scope="Data",
    )
    wb.set_defined_name(dn)

    // Get defined names
    let names = wb.get_defined_names()
    inspect(names.length(), content="1")
    inspect(names[0].name, content="SalesRange")
    }

    #Document Properties

    ///|
    test "document properties" {
    let wb = @xlsx.Workbook::new()

    // Set core properties
    let props = @xlsx.CoreProperties::with_values(
    title="Sales Report",
    creator="Finance Team",
    subject="Q4 2024 Sales",
    keywords="sales, quarterly, report",
    description="Quarterly sales report for Q4 2024",
    )
    wb.set_core_properties(props)

    // Read back
    let p = wb.core_properties()
    inspect(p.title, content="Sales Report")
    }

    #API Summary

    #Workbook Methods

    CategoryMethods
    Sheetsadd_sheet, delete_sheet, copy_sheet, sheet, sheets, get_sheet_list, set_sheet_name, set_sheet_visible
    Cellsget_cell, set_cell, get_cell_formula, set_cell_formula, calc_cell_value
    Rows/Colsget_row, set_row, get_col, set_col, insert_rows, remove_row, insert_cols, remove_col
    Stylesadd_style, new_style, get_style, new_conditional_style
    Featuresadd_chart, add_table, add_data_validation, add_pivot_table, add_sparkline, add_image
    Protectionprotect_workbook, unprotect_workbook, protect_sheet, unprotect_sheet
    Propertiescore_properties, app_properties, custom_properties, set_defined_name
    I/Osave, save_as, write_to_buffer

    #Worksheet Methods

    CategoryMethods
    Cellsget_cell, set_cell, get_cell_rc, set_cell_rc, set_cell_value, set_cell_formula, set_cell_style
    Rows/Colsget_row, set_row, get_col, set_col, set_row_height, set_col_width, set_row_visible, set_col_visible
    Mergemerge_cells, unmerge_cells, merged_cells
    Featuresadd_chart, add_table, add_data_validation, add_comment, add_hyperlink, add_image
    Layoutset_page_margins, set_page_layout, set_header_footer, set_panes
    Navigationmax_row, max_col, rows, cols, cells

    XlsxError

    pub suberror XlsxError {
    MissingPart(path~ : String)
    SheetNotFound(name~ : String)
    InvalidSheetName(msg~ : String)
    SheetAlreadyExists(name~ : String)
    InvalidSheetIndex(index~ : Int)
    InvalidSheetOperation(msg~ : String)
    InvalidXml(msg~ : String)
    InvalidBase64(msg~ : String)
    InvalidCellRef(value~ : String)
    InvalidSharedString(index~ : Int)
    InvalidStyleId(index~ : Int)
    InvalidTable(msg~ : String)
    InvalidSparkline(msg~ : String)
    InvalidPivotTable(msg~ : String)
    InvalidVBAProject(msg~ : String)
    InvalidVmlDrawing(msg~ : String)
    InvalidAutoFilter(msg~ : String)
    InvalidDataValidation(msg~ : String)
    InvalidConditionalFormat(msg~ : String)
    InvalidDefinedName(msg~ : String)
    DefinedNameDuplicate(name~ : String)
    DefinedNameScope(name~ : String)
    InvalidPageLayout(msg~ : String)
    InvalidHeaderFooter(msg~ : String)
    InvalidSheetProtection(msg~ : String)
    InvalidWorkbookProperty(msg~ : String)
    InvalidWorkbookProtection(msg~ : String)
    InvalidOptions(msg~ : String)
    InvalidExcelDate(value~ : Double)
    InvalidSheetBackground(msg~ : String)
    InvalidHyperlink(msg~ : String)
    HyperlinkLimitExceeded(limit~ : Int)
    CellTextTooLong(len~ : Int)
    GraphicNameTooLong(len~ : Int, limit~ : Int)
    GraphicAltTextTooLong(len~ : Int, limit~ : Int)
    InvalidComment(msg~ : String)
    CommentAlreadyExists(cell~ : String)
    CommentNotFound(cell~ : String)
    TableNotFound(name~ : String)
    StreamModeConflict(msg~ : String)
    StreamRowOrder(last~ : Int, next~ : Int)
    StreamWriterClosed
    EncryptedPackage
    InvalidEncryptionInfo(msg~ : String)
    InvalidEncryptedPackage(msg~ : String)
    InvalidPassword
    InvalidPasswordLength(len~ : Int)
    UnsupportedEncryption(msg~ : String)
    UnsupportedFeature(msg~ : String)
    InvalidPackage(msg~ : String)
    ReadCancelled
    ResourceLimitExceeded(kind~ : String, limit~ : Int, actual~ : Int)
    } derive(
    Debug
    )

    XlsxError::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn XlsxError::to_repr(XlsxError) ->
    Repr

    Alignment

    pub struct Alignment {
    horizontal : String?
    vertical : String?
    wrap_text : Bool?
    text_rotation : Int?
    indent : Int?
    shrink_to_fit : Bool?
    justify_last_line : Bool?
    reading_order : Int?
    relative_indent : Int?
    } derive(Eq,
    Debug
    )

    Text alignment settings for cells.

    Horizontal Values

    • "left", "center", "right", "fill", "justify", "centerContinuous", "distributed"

    Vertical Values

    • "top", "center", "bottom", "justify", "distributed"

    Alignment::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Alignment::equal(Alignment, Alignment) -> Bool

    Alignment::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Alignment::not_equal(x : Alignment, y : Alignment) -> Bool

    Alignment::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Alignment::to_repr(Alignment) ->
    Repr

    Alignment::with_values

    fn Alignment::with_values(horizontal? : String, vertical? : String, wrap_text? : Bool, text_rotation? : Int, indent? : Int, shrink_to_fit? : Bool, justify_last_line? : Bool, reading_order? : Int, relative_indent? : Int) -> Alignment

    Creates an Alignment with specified values.

    Parameters

    • horizontal: Horizontal alignment ("left", "center", "right", etc.)
    • vertical: Vertical alignment ("top", "center", "bottom", etc.)
    • wrap_text: Enable text wrapping
    • text_rotation: Rotation angle in degrees (0-180, or 255 for vertical)
    • indent: Indentation level
    • shrink_to_fit: Shrink text to fit cell width

    AppProperties

    pub struct AppProperties {
    application : String
    doc_security : Int?
    scale_crop : Bool?
    company : String
    links_up_to_date : Bool?
    hyperlinks_changed : Bool?
    app_version : String
    }

    AppProperties::with_values

    fn AppProperties::with_values(application? : String, doc_security? : Int, scale_crop? : Bool, company? : String, links_up_to_date? : Bool, hyperlinks_changed? : Bool, app_version? : String) -> AppProperties

    AutoFilter

    pub struct AutoFilter {
    range_ref : String
    columns : Array[AutoFilterColumn]
    } derive(
    Debug
    )

    AutoFilter::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn AutoFilter::to_repr(AutoFilter) ->
    Repr

    AutoFilterColumn

    pub struct AutoFilterColumn {
    col : Int
    filters : Array[String]?
    custom_filters : AutoFilterCustomFilters?
    } derive(
    Debug
    )

    AutoFilterColumn::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn AutoFilterColumn::to_repr(AutoFilterColumn) ->
    Repr

    AutoFilterCustomFilter

    pub struct AutoFilterCustomFilter {
    operator : String
    value : String
    } derive(
    Debug
    )

    AutoFilterCustomFilter::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn AutoFilterCustomFilter::to_repr(AutoFilterCustomFilter) ->
    Repr

    AutoFilterCustomFilters

    pub struct AutoFilterCustomFilters {
    and_filter : Bool
    filters : Array[AutoFilterCustomFilter]
    } derive(
    Debug
    )

    AutoFilterCustomFilters::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn AutoFilterCustomFilters::to_repr(AutoFilterCustomFilters) ->
    Repr

    AutoFilterOption

    #alias(AutoFilterOptions)
    pub(all) struct AutoFilterOption {
    column : String
    expression : String
    } derive(
    Debug
    )

    AutoFilterOption::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn AutoFilterOption::to_repr(AutoFilterOption) ->
    Repr

    Border

    pub struct Border {
    typ : String
    color : String?
    style : Int?
    } derive(Eq,
    Debug
    )

    Border styling for a cell edge.

    Border Types

    • "left", "right", "top", "bottom": Cell edges
    • "diagonalUp", "diagonalDown": Diagonal lines

    Border Styles

    • 0: None
    • 1: Thin
    • 2: Medium
    • 3: Dashed
    • 4: Dotted
    • 5: Thick
    • 6: Double
    • 7: Hair
    • 8: MediumDashed
    • 9: DashDot
    • 10: MediumDashDot
    • 11: DashDotDot
    • 12: MediumDashDotDot
    • 13: SlantDashDot

    Border::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Border::equal(Border, Border) -> Bool

    Border::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Border::not_equal(x : Border, y : Border) -> Bool

    Border::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Border::to_repr(Border) ->
    Repr

    Border::with_values

    fn Border::with_values(typ : String, color? : String, style? : Int) -> Border

    Creates a Border with specified values.

    Parameters

    • typ: Border type ("left", "right", "top", "bottom")
    • color: Hex color code
    • style: Border style (1=thin, 2=medium, 5=thick, etc.)

    Example

    let thin_black = Border::with_values("left", color="000000", style=1)

    let thick_red = Border::with_values("bottom", color="FF0000", style=5)

    CalcPropsOptions

    pub struct CalcPropsOptions {
    calc_id : UInt?
    calc_mode : String?
    full_calc_on_load : Bool?
    ref_mode : String?
    iterate : Bool?
    iterate_count : UInt?
    iterate_delta : Double?
    full_precision : Bool?
    calc_completed : Bool?
    calc_on_save : Bool?
    concurrent_calc : Bool?
    concurrent_manual_count : UInt?
    force_full_calc : Bool?
    } derive(Eq,
    Debug
    )

    CalcPropsOptions::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn CalcPropsOptions::equal(CalcPropsOptions, CalcPropsOptions) -> Bool

    CalcPropsOptions::new

    CalcPropsOptions::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn CalcPropsOptions::not_equal(x : CalcPropsOptions, y : CalcPropsOptions) -> Bool

    CalcPropsOptions::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn CalcPropsOptions::to_repr(CalcPropsOptions) ->
    Repr

    CalcPropsOptions::with_values

    fn CalcPropsOptions::with_values(calc_id? : UInt, calc_mode? : String, full_calc_on_load? : Bool, ref_mode? : String, iterate? : Bool, iterate_count? : UInt, iterate_delta? : Double, full_precision? : Bool, calc_completed? : Bool, calc_on_save? : Bool, concurrent_calc? : Bool, concurrent_manual_count? : UInt, force_full_calc? : Bool) -> CalcPropsOptions

    Cell

    pub struct Cell {
    reference : String
    row : Int
    col : Int
    value : String
    value_type : CellValueType
    rich_text : Array[RichTextRun]?
    formula : String?
    formula_type : FormulaType?
    formula_ref : String?
    formula_shared_index : UInt?
    formula_value_present : Bool
    style_explicit : Bool
    style_id : Int
    }

    CellFormulaInfo

    pub struct CellFormulaInfo {
    formula : String
    formula_type : FormulaType?
    range_ref : String?
    shared_index : UInt?
    cached_value_present : Bool
    }

    Read-only formula metadata for one worksheet coordinate. formula is the cell's semantic formula text; OOXML says shared-formula follower text is ignored, so followers are canonicalized to an empty string while formula_type and shared_index preserve their formula-bearing state. Callers that need display/query text can use the shared index to resolve the corresponding non-empty master formula.

    CellImage

    type CellImage

    A Kingsoft WPS Office embedded cell image, extracted from xl/cellimages.xml and its relationships. The name is the image identifier a DISPIMG formula references; data is the raw media, extension its file extension (with the leading dot, e.g. ".png"), and alt_text the descriptive text from cNvPr@descr.

    CellValue

    pub(all) enum CellValue {
    String(String)
    Numeric(Double)
    Bool(Bool)
    Error(String)
    } derive(
    Debug
    )

    CellValue::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn CellValue::to_repr(CellValue) ->
    Repr

    CellValueType

    #alias(CellType)
    type CellValueType derive(Eq,
    Debug
    )

    CellValueType::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn CellValueType::equal(CellValueType, CellValueType) -> Bool

    CellValueType::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn CellValueType::not_equal(x : CellValueType, y : CellValueType) -> Bool

    CellValueType::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn CellValueType::to_repr(CellValueType) ->
    Repr

    Chart

    pub struct Chart {
    reference : String
    xml : String
    offset_x : Int
    offset_y : Int
    width_emu : Int
    height_emu : Int
    print_object : Bool
    locked : Bool
    positioning : PicturePositioning
    // private fields
    }

    Chart::drawing_frame_is_canonical

    fn Chart::drawing_frame_is_canonical(self : Chart) -> Bool

    Whether this chart's drawing frame matches the canonical frame emitted by the writer. A false value means frame-level metadata such as a custom object name, alternative text, locks, or transform details would be lost by reconstructing only the chart part and public geometry.

    ChartAxis

    pub(all) struct ChartAxis {
    none : Bool
    drop_lines : Bool
    high_low_lines : Bool
    major_grid_lines : Bool
    minor_grid_lines : Bool
    major_unit : Double
    tick_label_position : ChartTickLabelPositionType
    tick_label_skip : Int
    reverse_order : Bool
    secondary : Bool
    maximum : Double?
    minimum : Double?
    alignment : Alignment
    font : Font
    log_base : Double
    num_fmt : ChartNumFmt
    title : String
    title_rich : Array[RichTextRun]?
    ax_id : Int
    } derive(
    Debug
    )

    ChartAxis::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartAxis::to_repr(ChartAxis) ->
    Repr

    ChartComboOptions

    type ChartComboOptions derive(
    Debug
    )

    ChartComboOptions::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartComboOptions::to_repr(ChartComboOptions) ->
    Repr

    ChartDashType

    pub(all) enum ChartDashType {
    Unset
    Solid
    Dot
    Dash
    LgDash
    SashDot
    LgDashDot
    LgDashDotDot
    SysDash
    SysDot
    SysDashDot
    SysDashDotDot
    } derive(Eq,
    Debug
    )

    ChartDashType::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartDashType::equal(ChartDashType, ChartDashType) -> Bool

    ChartDashType::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartDashType::not_equal(x : ChartDashType, y : ChartDashType) -> Bool

    ChartDashType::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartDashType::to_repr(ChartDashType) ->
    Repr

    ChartDataLabel

    pub(all) struct ChartDataLabel {
    font : Font
    alignment : Alignment
    fill_color : String
    fill_transparency : Int
    fill : ChartFill?
    } derive(
    Debug
    )

    ChartDataLabel::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartDataLabel::to_repr(ChartDataLabel) ->
    Repr

    ChartDataLabelPositionType

    pub(all) enum ChartDataLabelPositionType {
    Center
    Left
    Right
    Top
    Bottom
    BestFit
    InEnd
    OutEnd
    } derive(Eq,
    Debug
    )

    ChartDataLabelPositionType::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartDataLabelPositionType::equal(ChartDataLabelPositionType, ChartDataLabelPositionType) -> Bool

    ChartDataLabelPositionType::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartDataLabelPositionType::not_equal(x : ChartDataLabelPositionType, y : ChartDataLabelPositionType) -> Bool

    ChartDataLabelPositionType::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartDataLabelPositionType::to_repr(ChartDataLabelPositionType) ->
    Repr

    ChartDataPoint

    type ChartDataPoint derive(
    Debug
    )

    ChartDataPoint::new

    fn ChartDataPoint::new(index : Int, fill_color? : String, fill? : ChartFill) -> ChartDataPoint

    ChartDataPoint::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartDataPoint::to_repr(ChartDataPoint) ->
    Repr

    ChartDimension

    type ChartDimension derive(
    Debug
    )

    ChartDimension::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartDimension::to_repr(ChartDimension) ->
    Repr

    ChartDimension::with_values

    fn ChartDimension::with_values(width : Int, height : Int) -> ChartDimension raise XlsxError

    ChartFill

    pub(all) struct ChartFill {
    typ : String
    pattern : Int
    color : Array[String]
    shading : Int
    transparency : Int
    } derive(
    Debug
    )

    Explicit fill override for a chart element, mirroring Excelize's Fill struct. Only typ == "pattern" with pattern == 1 is acted on (like Go's drawShapeFill): a single color yields a solid fill with optional transparency, and any other color count yields an explicit no-fill. Other configurations are inert, matching Go. shading is accepted for API parity but, like Go's chart path, is not emitted.

    ChartFill::new

    fn ChartFill::new(typ? : String, pattern? : Int, color? : Array[String], shading? : Int, transparency? : Int) -> ChartFill

    ChartFill::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartFill::to_repr(ChartFill) ->
    Repr

    ChartLegend

    pub(all) struct ChartLegend {
    position : String
    show_legend_key : Bool
    font : Font?
    } derive(
    Debug
    )

    ChartLegend::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartLegend::to_repr(ChartLegend) ->
    Repr

    ChartLine

    pub(all) struct ChartLine {
    typ : ChartLineType
    dash : ChartDashType
    color : String
    transparency : Int
    smooth : Bool
    width : Double
    } derive(
    Debug
    )

    ChartLine::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartLine::to_repr(ChartLine) ->
    Repr

    ChartLineType

    pub(all) enum ChartLineType {
    Unset
    Solid
    NoLine
    Automatic
    } derive(Eq,
    Debug
    )

    ChartLineType::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartLineType::equal(ChartLineType, ChartLineType) -> Bool

    ChartLineType::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartLineType::not_equal(x : ChartLineType, y : ChartLineType) -> Bool

    ChartLineType::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartLineType::to_repr(ChartLineType) ->
    Repr

    ChartMarker

    pub(all) struct ChartMarker {
    symbol : String
    size : Int
    fill_color : String
    fill_transparency : Int
    fill : ChartFill?
    border : ChartLine
    } derive(
    Debug
    )

    ChartMarker::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartMarker::to_repr(ChartMarker) ->
    Repr

    ChartNumFmt

    type ChartNumFmt derive(
    Debug
    )

    ChartNumFmt::new

    fn ChartNumFmt::new(custom_num_fmt? : String, source_linked? : Bool) -> ChartNumFmt

    ChartNumFmt::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartNumFmt::to_repr(ChartNumFmt) ->
    Repr

    ChartOptions

    pub(all) struct ChartOptions {
    typ : ChartType
    series : Array[ChartSeries]
    combo_charts : Array[ChartComboOptions]
    format : GraphicOptions
    dimension : ChartDimension
    legend : ChartLegend
    title : String
    title_rich : Array[RichTextRun]?
    fill_color : String
    fill_transparency : Int
    fill : ChartFill?
    border : ChartLine
    vary_colors : Bool
    x_axis : ChartAxis
    y_axis : ChartAxis
    plot_area : ChartPlotArea
    show_blanks_as : String
    gap_width : Int?
    overlap : Int?
    hole_size : Int?
    bubble_scale : Int?
    } derive(
    Debug
    )

    ChartOptions::add_combo_chart

    fn ChartOptions::add_combo_chart(self : ChartOptions, combo : ChartOptions) -> Unit

    ChartOptions::new

    ChartOptions::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartOptions::to_repr(ChartOptions) ->
    Repr

    ChartPlotArea

    pub(all) struct ChartPlotArea {
    show_val : Bool
    show_cat_name : Bool
    show_ser_name : Bool
    show_percent : Bool
    show_leader_lines : Bool
    show_bubble_size : Bool
    show_data_table : Bool
    show_data_table_keys : Bool
    second_plot_values : Int
    num_fmt : ChartNumFmt
    up_bars : ChartUpDownBar
    down_bars : ChartUpDownBar
    fill_color : String
    fill_transparency : Int
    fill : ChartFill?
    } derive(
    Debug
    )

    ChartPlotArea::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartPlotArea::to_repr(ChartPlotArea) ->
    Repr

    ChartSeries

    pub(all) struct ChartSeries {
    name : String
    categories : String
    values : String
    bubble_size : String?
    sizes : String
    fill_color : String
    fill_transparency : Int
    fill : ChartFill?
    legend : ChartLegend
    line : ChartLine
    marker : ChartMarker
    data_label : ChartDataLabel
    data_label_position : ChartDataLabelPositionType
    data_point : Array[ChartDataPoint]
    } derive(
    Debug
    )

    ChartSeries::new

    fn ChartSeries::new(categories : String, values : String, name? : String) -> ChartSeries raise XlsxError

    ChartSeries::set_bubble_size

    fn ChartSeries::set_bubble_size(self : ChartSeries, bubble_size : String) -> Unit raise XlsxError

    ChartSeries::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartSeries::to_repr(ChartSeries) ->
    Repr

    ChartSheet

    pub struct ChartSheet {
    name : String
    state : SheetState
    chart_xml : String
    }

    ChartSheet::chart_xml

    fn ChartSheet::chart_xml(self : ChartSheet) -> String

    ChartSheet::name

    fn ChartSheet::name(self : ChartSheet) -> String

    ChartSheet::set_state

    fn ChartSheet::set_state(self : ChartSheet, state : SheetState) -> Unit

    ChartSheet::state

    fn ChartSheet::state(self : ChartSheet) -> SheetState

    ChartTickLabelPositionType

    pub(all) enum ChartTickLabelPositionType {
    NextToAxis
    High
    Low
    NoTickLabels
    } derive(
    Debug
    )

    ChartTickLabelPositionType::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartTickLabelPositionType::to_repr(ChartTickLabelPositionType) ->
    Repr

    ChartType

    pub(all) enum ChartType {
    Area
    AreaStacked
    AreaPercentStacked
    Area3D
    Area3DStacked
    Area3DPercentStacked
    Bar
    BarStacked
    BarPercentStacked
    Bar3DClustered
    Bar3DStacked
    Bar3DPercentStacked
    Bar3DConeClustered
    Bar3DConeStacked
    Bar3DConePercentStacked
    Bar3DPyramidClustered
    Bar3DPyramidStacked
    Bar3DPyramidPercentStacked
    Bar3DCylinderClustered
    Bar3DCylinderStacked
    Bar3DCylinderPercentStacked
    Col
    ColStacked
    ColPercentStacked
    Col3D
    Col3DClustered
    Col3DStacked
    Col3DPercentStacked
    Col3DCone
    Col3DConeClustered
    Col3DConeStacked
    Col3DConePercentStacked
    Col3DPyramid
    Col3DPyramidClustered
    Col3DPyramidStacked
    Col3DPyramidPercentStacked
    Col3DCylinder
    Col3DCylinderClustered
    Col3DCylinderStacked
    Col3DCylinderPercentStacked
    Doughnut
    Line
    Line3D
    Pie
    Pie3D
    PieOfPie
    BarOfPie
    Radar
    Scatter
    Surface3D
    WireframeSurface3D
    Contour
    WireframeContour
    Bubble
    Bubble3D
    StockHighLowClose
    StockOpenHighLowClose
    } derive(Eq,
    Debug
    )

    ChartType::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartType::equal(ChartType, ChartType) -> Bool

    ChartType::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartType::not_equal(x : ChartType, y : ChartType) -> Bool

    ChartType::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartType::to_repr(ChartType) ->
    Repr

    ChartUpDownBar

    pub(all) struct ChartUpDownBar {
    fill_color : String
    border : ChartLine
    fill : ChartFill?
    } derive(
    Debug
    )

    ChartUpDownBar::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ChartUpDownBar::to_repr(ChartUpDownBar) ->
    Repr

    ColDimension

    pub struct ColDimension {
    width : Double?
    hidden : Bool
    outline_level : Int
    style_id : Int?
    } derive(Eq,
    Debug
    )

    ColDimension::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ColDimension::equal(ColDimension, ColDimension) -> Bool

    ColDimension::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ColDimension::not_equal(x : ColDimension, y : ColDimension) -> Bool

    ColDimension::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ColDimension::to_repr(ColDimension) ->
    Repr

    Cols

    pub struct Cols {
    sheet : Worksheet
    columns : Array[Array[Cell]]
    max_row : Int
    index : Int
    styles : Array[Style]?
    options : Options
    use_1904_format : Bool
    err : XlsxError?
    }

    Cols::col_index

    fn Cols::col_index(self : Cols) -> Int?

    Cols::error

    fn Cols::error(self : Cols) -> XlsxError?

    Cols::next

    fn Cols::next(self : Cols) -> Bool

    Cols::rows

    fn Cols::rows(self : Cols, options? : Options) -> Array[String]

    Comment

    pub(all) struct Comment {
    cell : String
    author : String
    author_id : Int?
    text : String
    paragraph : Array[RichTextRun]
    width : Int?
    height : Int?
    } derive(
    Debug
    )

    Comment::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Comment::to_repr(Comment) ->
    Repr

    ConditionalFormatOptions

    pub(all) struct ConditionalFormatOptions {
    format_type : String
    above_average : Bool
    percent : Bool
    format : Int?
    criteria : String
    value : String
    min_type : String
    mid_type : String
    max_type : String
    min_value : String
    mid_value : String
    max_value : String
    min_color : String
    mid_color : String
    max_color : String
    bar_color : String
    bar_border_color : String
    bar_direction : String
    bar_only : Bool
    bar_solid : Bool
    icon_style : String
    reverse_icons : Bool
    icons_only : Bool
    stop_if_true : Bool
    } derive(
    Debug
    )

    ConditionalFormatOptions::new

    fn ConditionalFormatOptions::new(format_type : String) -> ConditionalFormatOptions

    ConditionalFormatOptions::set_above_average

    fn ConditionalFormatOptions::set_above_average(self : ConditionalFormatOptions, value : Bool) -> Unit

    ConditionalFormatOptions::set_bar_border_color

    fn ConditionalFormatOptions::set_bar_border_color(self : ConditionalFormatOptions, value : String) -> Unit

    ConditionalFormatOptions::set_bar_color

    fn ConditionalFormatOptions::set_bar_color(self : ConditionalFormatOptions, value : String) -> Unit

    ConditionalFormatOptions::set_bar_direction

    fn ConditionalFormatOptions::set_bar_direction(self : ConditionalFormatOptions, value : String) -> Unit

    ConditionalFormatOptions::set_bar_only

    fn ConditionalFormatOptions::set_bar_only(self : ConditionalFormatOptions, value : Bool) -> Unit

    ConditionalFormatOptions::set_bar_solid

    fn ConditionalFormatOptions::set_bar_solid(self : ConditionalFormatOptions, value : Bool) -> Unit

    ConditionalFormatOptions::set_criteria

    fn ConditionalFormatOptions::set_criteria(self : ConditionalFormatOptions, value : String) -> Unit

    ConditionalFormatOptions::set_format

    fn ConditionalFormatOptions::set_format(self : ConditionalFormatOptions, value : Int?) -> Unit

    ConditionalFormatOptions::set_icon_style

    fn ConditionalFormatOptions::set_icon_style(self : ConditionalFormatOptions, value : String) -> Unit

    ConditionalFormatOptions::set_icons_only

    fn ConditionalFormatOptions::set_icons_only(self : ConditionalFormatOptions, value : Bool) -> Unit

    ConditionalFormatOptions::set_max_color

    fn ConditionalFormatOptions::set_max_color(self : ConditionalFormatOptions, value : String) -> Unit

    ConditionalFormatOptions::set_max_type

    fn ConditionalFormatOptions::set_max_type(self : ConditionalFormatOptions, value : String) -> Unit

    ConditionalFormatOptions::set_max_value

    fn ConditionalFormatOptions::set_max_value(self : ConditionalFormatOptions, value : String) -> Unit

    ConditionalFormatOptions::set_mid_color

    fn ConditionalFormatOptions::set_mid_color(self : ConditionalFormatOptions, value : String) -> Unit

    ConditionalFormatOptions::set_mid_type

    fn ConditionalFormatOptions::set_mid_type(self : ConditionalFormatOptions, value : String) -> Unit

    ConditionalFormatOptions::set_mid_value

    fn ConditionalFormatOptions::set_mid_value(self : ConditionalFormatOptions, value : String) -> Unit

    ConditionalFormatOptions::set_min_color

    fn ConditionalFormatOptions::set_min_color(self : ConditionalFormatOptions, value : String) -> Unit

    ConditionalFormatOptions::set_min_type

    fn ConditionalFormatOptions::set_min_type(self : ConditionalFormatOptions, value : String) -> Unit

    ConditionalFormatOptions::set_min_value

    fn ConditionalFormatOptions::set_min_value(self : ConditionalFormatOptions, value : String) -> Unit

    ConditionalFormatOptions::set_percent

    fn ConditionalFormatOptions::set_percent(self : ConditionalFormatOptions, value : Bool) -> Unit

    ConditionalFormatOptions::set_reverse_icons

    fn ConditionalFormatOptions::set_reverse_icons(self : ConditionalFormatOptions, value : Bool) -> Unit

    ConditionalFormatOptions::set_stop_if_true

    fn ConditionalFormatOptions::set_stop_if_true(self : ConditionalFormatOptions, value : Bool) -> Unit

    ConditionalFormatOptions::set_value

    fn ConditionalFormatOptions::set_value(self : ConditionalFormatOptions, value : String) -> Unit

    ConditionalFormatOptions::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ConditionalFormatOptions::to_repr(ConditionalFormatOptions) ->
    Repr

    CoreProperties

    pub struct CoreProperties {
    title : String
    subject : String
    creator : String
    keywords : String
    description : String
    last_modified_by : String
    language : String
    identifier : String
    revision : String
    content_status : String
    category : String
    version : String
    created : String
    modified : String
    }

    CoreProperties::with_values

    fn CoreProperties::with_values(title? : String, subject? : String, creator? : String, keywords? : String, description? : String, last_modified_by? : String, language? : String, identifier? : String, revision? : String, content_status? : String, category? : String, version? : String, created? : String, modified? : String) -> CoreProperties

    CustomProperty

    pub struct CustomProperty {
    name : String
    value : CustomPropertyValue?
    } derive(
    Debug
    )

    CustomProperty::new

    fn CustomProperty::new(name : String, value : CustomPropertyValue?) -> CustomProperty

    CustomProperty::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn CustomProperty::to_repr(CustomProperty) ->
    Repr

    CustomPropertyValue

    pub(all) enum CustomPropertyValue {
    Integer(Int)
    Float(Double)
    Boolean(Bool)
    Text(String)
    DateTime(String)
    } derive(
    Debug
    )

    CustomPropertyValue::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn CustomPropertyValue::to_repr(CustomPropertyValue) ->
    Repr

    DataValidation

    pub struct DataValidation {
    allow_blank : Bool
    error : String?
    error_style : String?
    error_title : String?
    operator : String
    prompt : String?
    prompt_title : String?
    show_drop_down : Bool
    show_error_message : Bool
    show_input_message : Bool
    sqref : String
    validation_type : String
    formula1 : String
    formula2 : String
    } derive(
    Debug
    )

    DataValidation::new

    fn DataValidation::new(allow_blank : Bool) -> DataValidation

    DataValidation::set_drop_list

    fn DataValidation::set_drop_list(self : DataValidation, values : ArrayView[String]) -> Unit raise XlsxError

    DataValidation::set_error

    fn DataValidation::set_error(self : DataValidation, style : DataValidationErrorStyle, title : String, msg : String) -> Unit

    DataValidation::set_input

    fn DataValidation::set_input(self : DataValidation, title : String, msg : String) -> Unit

    DataValidation::set_range

    fn DataValidation::set_range(self : DataValidation, formula1 : DataValidationFormula, formula2 : DataValidationFormula, validation_type : DataValidationType, op : DataValidationOperator) -> Unit raise XlsxError

    DataValidation::set_sqref

    fn DataValidation::set_sqref(self : DataValidation, sqref : String) -> Unit raise XlsxError

    DataValidation::set_sqref_drop_list

    fn DataValidation::set_sqref_drop_list(self : DataValidation, sqref : String) -> Unit

    DataValidation::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn DataValidation::to_repr(DataValidation) ->
    Repr

    DataValidationErrorStyle

    pub(all) enum DataValidationErrorStyle {
    Stop
    Warning
    Information
    } derive(
    Debug
    )

    DataValidationErrorStyle::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn DataValidationErrorStyle::to_repr(DataValidationErrorStyle) ->
    Repr

    DataValidationFormula

    pub(all) enum DataValidationFormula {
    IntValue(Int)
    DoubleValue(Double)
    TextValue(String)
    } derive(
    Debug
    )

    DataValidationFormula::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn DataValidationFormula::to_repr(DataValidationFormula) ->
    Repr

    DataValidationOperator

    pub(all) enum DataValidationOperator {
    Between
    Equal
    GreaterThan
    GreaterThanOrEqual
    LessThan
    LessThanOrEqual
    NotBetween
    NotEqual
    } derive(
    Debug
    )

    DataValidationOperator::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn DataValidationOperator::to_repr(DataValidationOperator) ->
    Repr

    DataValidationType

    pub(all) enum DataValidationType {
    NoneType
    Custom
    Date
    Decimal
    List
    TextLength
    Time
    Whole
    } derive(
    Debug
    )

    DataValidationType::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn DataValidationType::to_repr(DataValidationType) ->
    Repr

    DefinedName

    pub struct DefinedName {
    name : String
    refers_to : String
    scope : String
    comment : String
    } derive(
    Debug
    )

    DefinedName::new

    fn DefinedName::new(name : String, refers_to : String, scope? : String, comment? : String) -> DefinedName

    DefinedName::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn DefinedName::to_repr(DefinedName) ->
    Repr

    Fill

    pub struct Fill {
    typ : String?
    pattern : Int?
    shading : Int?
    colors : Array[String]?
    transparency : Int?
    fg_theme : Int?
    fg_indexed : Int?
    fg_tint : Double?
    bg_theme : Int?
    bg_indexed : Int?
    bg_tint : Double?
    } derive(Eq,
    Debug
    )

    Fill (background) styling for cells.

    Supports solid colors, patterns, and gradients.

    Example

    // Solid yellow fill
    let fill = Fill::solid("FFFF00")

    // Gradient fill

    let gradient = Fill::gradient("FF0000", "0000FF", shading=1)

    Fill::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Fill::equal(Fill, Fill) -> Bool

    Fill::gradient

    fn Fill::gradient(color1 : String, color2 : String, shading? : Int, transparency? : Int) -> Fill

    Creates a gradient fill between two colors.

    Parameters

    • color1: Start color (hex code)
    • color2: End color (hex code)
    • shading: Gradient shading variant (0-15)
    • transparency: Transparency percentage (0-100)

    Example

    let gradient = Fill::gradient("FF0000", "0000FF") // Red to blue

    Fill::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Fill::not_equal(x : Fill, y : Fill) -> Bool

    Fill::pattern

    fn Fill::pattern(pattern? : Int, color? : String, transparency? : Int) -> Fill

    Fill::solid

    fn Fill::solid(color : String, transparency? : Int) -> Fill

    Creates a solid color fill.

    Parameters

    • color: Hex color code like "FFFF00" for yellow
    • transparency: Transparency percentage (0-100)

    Example

    let yellow = Fill::solid("FFFF00")

    let semi_transparent = Fill::solid("FF0000", transparency=50)

    Fill::solid_bg_indexed

    fn Fill::solid_bg_indexed(indexed : Int, tint? : Double) -> Fill

    Fill::solid_bg_theme

    fn Fill::solid_bg_theme(theme : Int, tint? : Double) -> Fill

    Fill::solid_indexed

    fn Fill::solid_indexed(indexed : Int, tint? : Double) -> Fill

    Fill::solid_theme

    fn Fill::solid_theme(theme : Int, tint? : Double) -> Fill

    Fill::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Fill::to_repr(Fill) ->
    Repr

    Font

    pub struct Font {
    bold : Bool?
    italic : Bool?
    strike : Bool?
    outline : Bool?
    shadow : Bool?
    condense : Bool?
    extended : Bool?
    underline : String?
    size : Double?
    color : String?
    color_theme : Int?
    color_indexed : Int?
    color_tint : Double?
    charset : Int?
    family_number : Int?
    scheme : String?
    vert_align : String?
    family : String?
    } derive(Eq,
    Debug
    )

    Font styling for cell text.

    All fields are optional; only set fields affect the cell's appearance.

    Example

    let font = Font::with_values(
    bold=true,
    size=12.0,
    color="FF0000", // Red
    underline="single",
    )

    Font::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Font::equal(Font, Font) -> Bool

    Font::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Font::not_equal(x : Font, y : Font) -> Bool

    Font::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Font::to_repr(Font) ->
    Repr

    Font::with_values

    fn Font::with_values(bold? : Bool, italic? : Bool, strike? : Bool, outline? : Bool, shadow? : Bool, condense? : Bool, extended? : Bool, underline? : String, size? : Double, color? : String, color_theme? : Int, color_indexed? : Int, color_tint? : Double, charset? : Int, family_number? : Int, scheme? : String, vert_align? : String, family? : String) -> Font

    Creates a new Font with specified values.

    Parameters

    • bold: Bold text
    • italic: Italic text
    • strike: Strikethrough
    • underline: Underline style ("single", "double", "singleAccounting", "doubleAccounting")
    • size: Font size in points
    • color: Hex color code like "FF0000" for red
    • color_theme: Theme color index (0-9)
    • color_tint: Tint value for theme color (-1.0 to 1.0)
    • vert_align: Vertical alignment ("superscript", "subscript")
    • family: Font family name

    FormControl

    pub struct FormControl {
    cell : String
    control_type : String
    text : String
    macro_name : String?
    checked : Bool?
    cell_link : String?
    width : Int?
    height : Int?
    current_val : Int?
    min_val : Int?
    max_val : Int?
    inc_change : Int?
    page_change : Int?
    horizontally : Bool?
    format : GraphicOptions
    paragraph : Array[RichTextRun]
    } derive(
    Debug
    )

    FormControl::new

    fn FormControl::new(cell : String, control_type : String, text? : String) -> FormControl raise XlsxError

    fn FormControl::set_cell_link(self : FormControl, cell_link : StringView) -> Unit raise XlsxError

    FormControl::set_checked

    fn FormControl::set_checked(self : FormControl, checked : Bool) -> Unit

    FormControl::set_current_val

    fn FormControl::set_current_val(self : FormControl, value : Int) -> Unit raise XlsxError

    FormControl::set_format

    fn FormControl::set_format(self : FormControl, format : GraphicOptions) -> Unit

    FormControl::set_height

    fn FormControl::set_height(self : FormControl, height : Int) -> Unit raise XlsxError

    FormControl::set_horizontally

    fn FormControl::set_horizontally(self : FormControl, value : Bool) -> Unit

    FormControl::set_inc_change

    fn FormControl::set_inc_change(self : FormControl, value : Int) -> Unit raise XlsxError

    FormControl::set_macro_name

    fn FormControl::set_macro_name(self : FormControl, value : StringView) -> Unit

    FormControl::set_max_val

    fn FormControl::set_max_val(self : FormControl, value : Int) -> Unit raise XlsxError

    FormControl::set_min_val

    fn FormControl::set_min_val(self : FormControl, value : Int) -> Unit raise XlsxError

    FormControl::set_page_change

    fn FormControl::set_page_change(self : FormControl, value : Int) -> Unit raise XlsxError

    FormControl::set_paragraph

    fn FormControl::set_paragraph(self : FormControl, paragraph : Array[RichTextRun]) -> Unit

    FormControl::set_width

    fn FormControl::set_width(self : FormControl, width : Int) -> Unit raise XlsxError

    FormControl::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn FormControl::to_repr(FormControl) ->
    Repr

    FormControlVmlPreset

    type FormControlVmlPreset derive(
    Debug
    )

    FormControlVmlPreset::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn FormControlVmlPreset::to_repr(FormControlVmlPreset) ->
    Repr

    FormulaOpts

    pub struct FormulaOpts {
    formula_type : FormulaType?
    range_ref : String?
    } derive(
    Debug
    )

    FormulaOpts::array

    fn FormulaOpts::array(range_ref : String) -> FormulaOpts

    FormulaOpts::shared

    fn FormulaOpts::shared(range_ref : String) -> FormulaOpts

    FormulaOpts::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn FormulaOpts::to_repr(FormulaOpts) ->
    Repr

    FormulaOpts::with_values

    fn FormulaOpts::with_values(formula_type? : FormulaType, range_ref? : String) -> FormulaOpts

    FormulaType

    pub(all) enum FormulaType {
    Normal
    Array
    Shared
    DataTable
    } derive(
    Debug
    )

    FormulaType::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn FormulaType::to_repr(FormulaType) ->
    Repr

    GraphicOptions

    pub struct GraphicOptions {
    offset_x : Int?
    offset_y : Int?
    scale_x : Double?
    scale_y : Double?
    hyperlink : String?
    hyperlink_type : HyperlinkType?
    name : String?
    alt_text : String?
    lock_aspect_ratio : Bool?
    auto_fit : Bool?
    auto_fit_ignore_aspect : Bool?
    print_object : Bool?
    locked : Bool?
    positioning : PicturePositioning?
    } derive(
    Debug
    )

    GraphicOptions::new

    GraphicOptions::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn GraphicOptions::to_repr(GraphicOptions) ->
    Repr

    GraphicOptions::with_values

    fn GraphicOptions::with_values(offset_x? : Int, offset_y? : Int, scale_x? : Double, scale_y? : Double, hyperlink? : String, hyperlink_type? : HyperlinkType, name? : String, alt_text? : String, lock_aspect_ratio? : Bool, auto_fit? : Bool, auto_fit_ignore_aspect? : Bool, print_object? : Bool, locked? : Bool, positioning? : PicturePositioning) -> GraphicOptions

    HeaderFooterImage

    type HeaderFooterImage

    HeaderFooterImageOptions

    pub struct HeaderFooterImageOptions {
    position : HeaderFooterImagePosition
    data : Bytes
    file : String?
    extension : String
    is_footer : Bool
    first_page : Bool
    width : String
    height : String
    } derive(
    Debug
    )

    HeaderFooterImageOptions::from_file

    fn HeaderFooterImageOptions::from_file(position : HeaderFooterImagePosition, file : String, is_footer? : Bool, first_page? : Bool, width? : String, height? : String) -> HeaderFooterImageOptions raise XlsxError

    HeaderFooterImageOptions::new

    fn HeaderFooterImageOptions::new(position : HeaderFooterImagePosition, data : Bytes, extension : String, is_footer? : Bool, first_page? : Bool, width? : String, height? : String) -> HeaderFooterImageOptions

    HeaderFooterImageOptions::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn HeaderFooterImageOptions::to_repr(HeaderFooterImageOptions) ->
    Repr

    HeaderFooterImagePosition

    pub(all) enum HeaderFooterImagePosition {
    Left
    Center
    Right
    } derive(Eq,
    Debug
    )

    HeaderFooterImagePosition::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn HeaderFooterImagePosition::equal(HeaderFooterImagePosition, HeaderFooterImagePosition) -> Bool

    HeaderFooterImagePosition::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn HeaderFooterImagePosition::not_equal(x : HeaderFooterImagePosition, y : HeaderFooterImagePosition) -> Bool

    HeaderFooterImagePosition::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn HeaderFooterImagePosition::to_repr(HeaderFooterImagePosition) ->
    Repr

    HeaderFooterOptions

    pub struct HeaderFooterOptions {
    align_with_margins : Bool?
    different_first : Bool
    different_odd_even : Bool
    scale_with_doc : Bool?
    odd_header : String
    odd_footer : String
    even_header : String
    even_footer : String
    first_header : String
    first_footer : String
    } derive(
    Debug
    )

    HeaderFooterOptions::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn HeaderFooterOptions::to_repr(HeaderFooterOptions) ->
    Repr

    HeaderFooterOptions::with_values

    fn HeaderFooterOptions::with_values(align_with_margins? : Bool, different_first? : Bool, different_odd_even? : Bool, scale_with_doc? : Bool, odd_header? : String, odd_footer? : String, even_header? : String, even_footer? : String, first_header? : String, first_footer? : String) -> HeaderFooterOptions

    pub struct Hyperlink {
    reference : String
    target : String
    link_type : HyperlinkType
    location : String?
    display : String?
    tooltip : String?
    } derive(
    Debug
    )

    Hyperlink::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Hyperlink::to_repr(Hyperlink) ->
    Repr

    HyperlinkOpts

    pub struct HyperlinkOpts {
    display : String?
    tooltip : String?
    } derive(
    Debug
    )

    HyperlinkOpts::new

    HyperlinkOpts::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn HyperlinkOpts::to_repr(HyperlinkOpts) ->
    Repr

    HyperlinkOpts::with_values

    fn HyperlinkOpts::with_values(display? : String, tooltip? : String) -> HyperlinkOpts

    HyperlinkType

    pub(all) enum HyperlinkType {
    External
    Location
    Unset
    } derive(Eq,
    Debug
    )

    HyperlinkType::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn HyperlinkType::equal(HyperlinkType, HyperlinkType) -> Bool

    HyperlinkType::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn HyperlinkType::not_equal(x : HyperlinkType, y : HyperlinkType) -> Bool

    HyperlinkType::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn HyperlinkType::to_repr(HyperlinkType) ->
    Repr

    IgnoredError

    pub struct IgnoredError {
    sqref : String
    eval_error : Bool
    two_digit_text_year : Bool
    number_stored_as_text : Bool
    formula : Bool
    formula_range : Bool
    unlocked_formula : Bool
    empty_cell_reference : Bool
    list_data_validation : Bool
    calculated_column : Bool
    } derive(Eq,
    Debug
    )

    IgnoredError::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn IgnoredError::equal(IgnoredError, IgnoredError) -> Bool

    IgnoredError::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn IgnoredError::not_equal(x : IgnoredError, y : IgnoredError) -> Bool

    IgnoredError::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn IgnoredError::to_repr(IgnoredError) ->
    Repr

    IgnoredErrorType

    pub(all) enum IgnoredErrorType {
    EvalError
    TwoDigitTextYear
    NumberStoredAsText
    Formula
    FormulaRange
    UnlockedFormula
    EmptyCellReference
    ListDataValidation
    CalculatedColumn
    } derive(Eq,
    Debug
    )

    IgnoredErrorType::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn IgnoredErrorType::equal(IgnoredErrorType, IgnoredErrorType) -> Bool

    IgnoredErrorType::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn IgnoredErrorType::not_equal(x : IgnoredErrorType, y : IgnoredErrorType) -> Bool

    IgnoredErrorType::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn IgnoredErrorType::to_repr(IgnoredErrorType) ->
    Repr

    Image

    #alias(Picture)
    pub struct Image {
    reference : String
    data : Bytes
    extension : String
    content_type : String
    offset_x : Int
    offset_y : Int
    scale_x : Double
    scale_y : Double
    width_emu : Int
    height_emu : Int
    print_object : Bool
    locked : Bool
    hyperlink : String
    hyperlink_type : HyperlinkType
    name : String
    alt_text : String
    lock_aspect_ratio : Bool
    positioning : PicturePositioning
    // private fields
    }

    MergeCell

    pub struct MergeCell {
    range_ref : String
    value : String
    } derive(
    Debug
    )

    MergeCell::get_cell_value

    fn MergeCell::get_cell_value(self : MergeCell) -> String

    MergeCell::get_end_axis

    fn MergeCell::get_end_axis(self : MergeCell) -> String

    MergeCell::get_start_axis

    fn MergeCell::get_start_axis(self : MergeCell) -> String

    MergeCell::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn MergeCell::to_repr(MergeCell) ->
    Repr

    NumberFormat

    pub enum NumberFormat {
    Builtin(Int)
    Custom(String)
    } derive(Eq,
    Debug
    )

    Number format specification for cell values.

    Excel supports both built-in formats (by index) and custom format strings.

    Built-in Format IDs

    • 0: General
    • 1: 0
    • 2: 0.00
    • 3: #,##0
    • 4: #,##0.00
    • 9: 0%
    • 10: 0.00%
    • 11: 0.00E+00
    • 12: # ?/?
    • 13: # ??/??
    • 14: mm-dd-yy
    • 15: d-mmm-yy
    • 16: d-mmm
    • 17: mmm-yy
    • 18: h:mm AM/PM
    • 19: h:mm:ss AM/PM
    • 20: h:mm
    • 21: h:mm:ss
    • 22: m/d/yy h:mm

    NumberFormat::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn NumberFormat::equal(NumberFormat, NumberFormat) -> Bool

    NumberFormat::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn NumberFormat::not_equal(x : NumberFormat, y : NumberFormat) -> Bool

    NumberFormat::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn NumberFormat::to_repr(NumberFormat) ->
    Repr

    Options

    pub struct Options {
    max_calc_iterations : UInt
    password : String
    raw_cell_value : Bool
    tmp_dir : String
    short_date_pattern : String
    long_date_pattern : String
    long_time_pattern : String
    culture_info : String
    } derive(
    Debug
    )

    Options::new

    fn Options::new() -> Options

    Options::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Options::to_repr(Options) ->
    Repr

    Options::with_values

    fn Options::with_values(max_calc_iterations? : UInt, password? : String, raw_cell_value? : Bool, tmp_dir? : String, short_date_pattern? : String, long_date_pattern? : String, long_time_pattern? : String, culture_info? : String) -> Options

    PageBreak

    pub struct PageBreak {
    id : Int
    min : Int
    max : Int
    manual : Bool
    } derive(
    Debug
    )

    PageBreak::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn PageBreak::to_repr(PageBreak) ->
    Repr

    PageLayoutMarginsOptions

    pub struct PageLayoutMarginsOptions {
    top : Double?
    bottom : Double?
    left : Double?
    right : Double?
    header : Double?
    footer : Double?
    horizontally : Bool?
    vertically : Bool?
    } derive(
    Debug
    )

    PageLayoutMarginsOptions::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn PageLayoutMarginsOptions::to_repr(PageLayoutMarginsOptions) ->
    Repr

    PageLayoutMarginsOptions::with_values

    fn PageLayoutMarginsOptions::with_values(top? : Double, bottom? : Double, left? : Double, right? : Double, header? : Double, footer? : Double, horizontally? : Bool, vertically? : Bool) -> PageLayoutMarginsOptions

    PageLayoutOptions

    pub struct PageLayoutOptions {
    size : Int?
    orientation : String?
    first_page_number : Int?
    adjust_to : Int?
    fit_to_height : Int?
    fit_to_width : Int?
    black_and_white : Bool?
    page_order : String?
    } derive(
    Debug
    )

    PageLayoutOptions::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn PageLayoutOptions::to_repr(PageLayoutOptions) ->
    Repr

    PageLayoutOptions::with_values

    fn PageLayoutOptions::with_values(size? : Int, orientation? : String, first_page_number? : Int, adjust_to? : Int, fit_to_height? : Int, fit_to_width? : Int, black_and_white? : Bool, page_order? : String) -> PageLayoutOptions

    Panes

    pub struct Panes {
    freeze : Bool
    split : Bool
    x_split : Int
    y_split : Int
    top_left_cell : String
    active_pane : String
    selection : Array[Selection]
    } derive(
    Debug
    )

    Panes::new

    fn Panes::new() -> Panes

    Panes::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Panes::to_repr(Panes) ->
    Repr

    Panes::with_values

    fn Panes::with_values(freeze? : Bool, split? : Bool, x_split? : Int, y_split? : Int, top_left_cell? : String, active_pane? : String, selection? : Array[Selection]) -> Panes

    PicturePositioning

    pub(all) enum PicturePositioning {
    OneCell
    TwoCell
    Absolute
    } derive(
    Debug
    )

    PicturePositioning::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn PicturePositioning::to_repr(PicturePositioning) ->
    Repr

    PivotTable

    pub struct PivotTable {
    name : String
    table_id : Int
    cache_id : Int
    table_xml : String
    cache_definition_xml : String
    cache_records_xml : String?
    }

    PivotTableField

    pub struct PivotTableField {
    data : String
    name : String
    subtotal : String
    num_fmt : Int
    compact : Bool
    outline : Bool
    show_all : Bool
    insert_blank_row : Bool
    default_subtotal : Bool
    } derive(
    Debug
    )

    PivotTableField::new

    fn PivotTableField::new(data : String, name? : String, subtotal? : String, num_fmt? : Int, compact? : Bool, outline? : Bool, show_all? : Bool, insert_blank_row? : Bool, default_subtotal? : Bool) -> PivotTableField raise XlsxError

    PivotTableField::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn PivotTableField::to_repr(PivotTableField) ->
    Repr

    PivotTableOptions

    pub(all) struct PivotTableOptions {
    data_range : String
    pivot_table_range : String
    name : String
    rows : Array[PivotTableField]
    columns : Array[PivotTableField]
    data : Array[PivotTableField]
    filter : Array[PivotTableField]
    row_grand_totals : Bool
    col_grand_totals : Bool
    show_drill : Bool
    use_auto_formatting : Bool
    page_over_then_down : Bool
    merge_item : Bool
    classic_layout : Bool
    compact_data : Bool
    show_error : Bool
    show_row_headers : Bool
    show_col_headers : Bool
    show_row_stripes : Bool
    show_col_stripes : Bool
    show_last_column : Bool
    field_print_titles : Bool
    item_print_titles : Bool
    pivot_table_style_name : String
    } derive(
    Debug
    )

    PivotTableOptions::new

    fn PivotTableOptions::new(data_range : String, pivot_table_range : String) -> PivotTableOptions raise XlsxError

    PivotTableOptions::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn PivotTableOptions::to_repr(PivotTableOptions) ->
    Repr

    Protection

    pub struct Protection {
    hidden : Bool?
    locked : Bool?
    } derive(Eq,
    Debug
    )

    Protection::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Protection::equal(Protection, Protection) -> Bool

    Protection::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Protection::not_equal(x : Protection, y : Protection) -> Bool

    Protection::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Protection::to_repr(Protection) ->
    Repr

    Protection::with_values

    fn Protection::with_values(hidden? : Bool, locked? : Bool) -> Protection

    RawDataValidationCriteria

    pub struct RawDataValidationCriteria {
    validation_type : String
    sqref : String
    formula1 : String
    formula2 : String
    } derive(Eq,
    Debug
    )

    One data validation's RAW criteria: the stored type, scope, and formula text with doubled-quote escapes PRESERVED (the parsed reader collapses them, which makes literal-ness undecidable downstream — "It""s,ok" and "a"&B1&"b" collapse to structurally similar text). Entries the raw scan cannot interpret carry validation_type "opaque".

    RawDataValidationCriteria::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RawDataValidationCriteria::equal(RawDataValidationCriteria, RawDataValidationCriteria) -> Bool

    RawDataValidationCriteria::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RawDataValidationCriteria::not_equal(x : RawDataValidationCriteria, y : RawDataValidationCriteria) -> Bool

    RawDataValidationCriteria::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RawDataValidationCriteria::to_repr(RawDataValidationCriteria) ->
    Repr

    ReadLimits

    pub struct ReadLimits {
    // private fields
    }

    A complete fail-closed resource policy for reading an XLSX package.

    The type is opaque so every public read path receives a validated, internally consistent policy. ZIP limits are enforced while inflating; max_xml_part_bytes is enforced before any individual XML part is decoded, aggregate decoded XML, markup tokens, materialized worksheet cells, and retained row/column dimensions are bounded across the complete workbook parse. Semantic ceilings also bound workbook fan-out, XML-backed parser items, derived materialization, and cumulative parser work. Row/column dimension expansion work has a separate ceiling so overlapping declarations cannot hide excessive map-update work behind the retained-item limit; max_kdf_iterations bounds encrypted-package password derivation.

    ReadLimits::max_archive_entries

    fn ReadLimits::max_archive_entries(self : ReadLimits) -> Int

    Returns the maximum number of ZIP entries accepted in one package.

    ReadLimits::max_entry_uncompressed_bytes

    fn ReadLimits::max_entry_uncompressed_bytes(self : ReadLimits) -> Int

    Returns the maximum inflated size of one ZIP entry in bytes.

    ReadLimits::max_kdf_iterations

    fn ReadLimits::max_kdf_iterations(self : ReadLimits) -> Int

    Returns the maximum accepted Agile password-KDF work factor.

    ReadLimits::max_materialized_cells

    fn ReadLimits::max_materialized_cells(self : ReadLimits) -> Int

    Returns the maximum worksheet cells materialized across the workbook.

    ReadLimits::max_materialized_row_column_dimensions

    fn ReadLimits::max_materialized_row_column_dimensions(self : ReadLimits) -> Int

    Returns the maximum retained row/column dimensions across the workbook.

    ReadLimits::max_package_bytes

    fn ReadLimits::max_package_bytes(self : ReadLimits) -> Int

    Returns the maximum accepted compressed XLSX package size in bytes.

    ReadLimits::max_parser_items

    fn ReadLimits::max_parser_items(self : ReadLimits) -> Int

    Returns the maximum cumulative XML-backed and derived items that a read may inspect or materialize.

    ReadLimits::max_parser_work_units

    fn ReadLimits::max_parser_work_units(self : ReadLimits) -> Int

    Returns the maximum cumulative XML source units plus derived expansion work accepted by the parser.

    ReadLimits::max_relationship_id_chars

    fn ReadLimits::max_relationship_id_chars(self : ReadLimits) -> Int

    Returns the maximum retained relationship id length in characters.

    ReadLimits::max_relationship_records

    fn ReadLimits::max_relationship_records(self : ReadLimits) -> Int

    Returns the maximum aggregate relationship records scanned in one package.

    ReadLimits::max_relationship_target_chars

    fn ReadLimits::max_relationship_target_chars(self : ReadLimits) -> Int

    Returns the maximum internal/external relationship target length.

    ReadLimits::max_relationship_type_chars

    fn ReadLimits::max_relationship_type_chars(self : ReadLimits) -> Int

    Returns the maximum relationship type URI length in characters.

    ReadLimits::max_row_column_dimension_work

    fn ReadLimits::max_row_column_dimension_work(self : ReadLimits) -> Int

    Returns the maximum row/column dimension expansion work across the workbook.

    ReadLimits::max_total_preserved_source_bytes

    fn ReadLimits::max_total_preserved_source_bytes(self : ReadLimits) -> Int

    Returns the maximum aggregate compressed source bytes a bounded archive may preserve for lossless republishing.

    ReadLimits::max_total_relationship_chars

    fn ReadLimits::max_total_relationship_chars(self : ReadLimits) -> Int

    Returns the maximum aggregate relationship attribute characters scanned.

    ReadLimits::max_total_uncompressed_bytes

    fn ReadLimits::max_total_uncompressed_bytes(self : ReadLimits) -> Int

    Returns the maximum aggregate inflated size of all ZIP entries in bytes.

    ReadLimits::max_total_xml_bytes

    fn ReadLimits::max_total_xml_bytes(self : ReadLimits) -> Int

    Returns the maximum aggregate XML-like bytes decoded during one read.

    ReadLimits::max_workbook_sheets

    fn ReadLimits::max_workbook_sheets(self : ReadLimits) -> Int

    Returns the maximum number of logical sheets accepted in one workbook.

    ReadLimits::max_xml_markup_tokens

    fn ReadLimits::max_xml_markup_tokens(self : ReadLimits) -> Int

    Returns the maximum aggregate markup-token starts scanned while decoding.

    ReadLimits::max_xml_part_bytes

    fn ReadLimits::max_xml_part_bytes(self : ReadLimits) -> Int

    Returns the maximum size of one XML-like OOXML part in bytes.

    ReadLimits::new

    fn ReadLimits::new() -> ReadLimits

    Returns the production XLSX read policy: 128 MiB source packages, 8,192 entries, 64 MiB per entry, 256 MiB aggregate expansion, 16 MiB per XML part, 128 MiB decoded XML, two million markup tokens, one million relationship records with 16 MiB retained relationship text, one million materialized cells, one million retained row/column dimensions, one million row/column dimension expansion steps, 1,024 sheets, two million parser items, 512 Mi parser work units, and one million Agile KDF iterations. Call with_values for stricter limits.

    ReadLimits::with_values

    fn ReadLimits::with_values(max_package_bytes? : Int, max_archive_entries? : Int, max_entry_uncompressed_bytes? : Int, max_total_uncompressed_bytes? : Int, max_total_preserved_source_bytes? : Int, max_xml_part_bytes? : Int, max_total_xml_bytes? : Int, max_xml_markup_tokens? : Int, max_relationship_records? : Int, max_relationship_id_chars? : Int, max_relationship_type_chars? : Int, max_relationship_target_chars? : Int, max_total_relationship_chars? : Int, max_materialized_cells? : Int, max_materialized_row_column_dimensions? : Int, max_row_column_dimension_work? : Int, max_kdf_iterations? : Int, max_workbook_sheets? : Int, max_parser_items? : Int, max_parser_work_units? : Int) -> ReadLimits raise XlsxError

    Builds a validated XLSX read policy. All ceilings must be positive; the per-entry and per-XML ceilings cannot exceed the aggregate expansion limit.

    RichTextFont

    pub(all) struct RichTextFont {
    bold : Bool
    italic : Bool
    strike : Bool
    outline : Bool
    shadow : Bool
    condense : Bool
    extended : Bool
    underline : String?
    size : Double?
    color : String?
    color_theme : Int?
    color_indexed : Int?
    color_tint : Double?
    charset : Int?
    family_number : Int?
    scheme : String?
    vert_align : String?
    family : String?
    } derive(
    Debug
    )

    RichTextFont::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RichTextFont::to_repr(RichTextFont) ->
    Repr

    RichTextRun

    pub(all) struct RichTextRun {
    text : String
    font : RichTextFont?
    } derive(
    Debug
    )

    RichTextRun::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RichTextRun::to_repr(RichTextRun) ->
    Repr

    RichValueImages

    type RichValueImages

    The parsed xl/richData/* and xl/metadata.xml parts needed to resolve modern Excel embedded cell images ("Place in cell"). Mirrors the chain Excelize's getImageCellRel walks: a cell's vm index selects a value-metadata block, whose record points at a rich value, whose structure names a _rvRel:LocalImageIdentifier value, which indexes richValueRel.xml to a relationship, which resolves to a media part.

    RowCells

    type RowCells

    RowDimension

    pub struct RowDimension {
    height : Double?
    hidden : Bool
    outline_level : Int
    style_id : Int?
    } derive(Eq,
    Debug
    )

    RowDimension::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RowDimension::equal(RowDimension, RowDimension) -> Bool

    RowDimension::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RowDimension::not_equal(x : RowDimension, y : RowDimension) -> Bool

    RowDimension::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RowDimension::to_repr(RowDimension) ->
    Repr

    RowOpts

    pub struct RowOpts {
    height : Double
    hidden : Bool
    style_id : Int
    outline_level : Int
    } derive(
    Debug
    )

    RowOpts::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RowOpts::to_repr(RowOpts) ->
    Repr

    RowOpts::with_values

    fn RowOpts::with_values(height? : Double, hidden? : Bool, style_id? : Int, outline_level? : Int) -> RowOpts

    RowStateClass

    pub(all) enum RowStateClass {
    Cells
    RowDimensions
    MergedRanges
    ConditionalFormats
    DataValidations
    HyperlinkAnchors
    InternalLinkTargets
    AutoFilterRange
    TableRanges
    SparklineAnchors
    ImageAnchors
    ChartAnchors
    ShapeAnchors
    FormControlAnchors
    SlicerAnchors
    CommentAnchors
    IgnoredErrorRanges
    RowPageBreaks
    CellValueMetadata
    DimensionRef
    PreservedDrawingAnchors
    VmlContent
    UnknownExtensions
    ViewState
    DefinedNameReferences
    SheetScopedNamesUnadjusted
    } derive(Eq,
    Debug
    )

    RowStateClass::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RowStateClass::equal(RowStateClass, RowStateClass) -> Bool

    RowStateClass::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RowStateClass::not_equal(x : RowStateClass, y : RowStateClass) -> Bool

    RowStateClass::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RowStateClass::to_repr(RowStateClass) ->
    Repr

    RowStateEntry

    pub struct RowStateEntry {
    class : RowStateClass
    extent : RowStateExtent
    handling : RowStateHandling
    } derive(Eq,
    Debug
    )

    RowStateEntry::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RowStateEntry::equal(RowStateEntry, RowStateEntry) -> Bool

    RowStateEntry::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RowStateEntry::not_equal(x : RowStateEntry, y : RowStateEntry) -> Bool

    RowStateEntry::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RowStateEntry::to_repr(RowStateEntry) ->
    Repr

    RowStateExtent

    pub(all) enum RowStateExtent {
    RowsUpTo(Int)
    WholeSheet
    Positionless
    } derive(Eq,
    Debug
    )

    The row extent a class occupies.

    RowStateExtent::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RowStateExtent::equal(RowStateExtent, RowStateExtent) -> Bool

    RowStateExtent::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RowStateExtent::not_equal(x : RowStateExtent, y : RowStateExtent) -> Bool

    RowStateExtent::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RowStateExtent::to_repr(RowStateExtent) ->
    Repr

    RowStateHandling

    pub(all) enum RowStateHandling {
    ShiftedByInsert
    StaticOnWrite
    DroppedByWriter
    } derive(Eq,
    Debug
    )

    How insert_rows/duplicate_row_to treat a class today.

    RowStateHandling::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RowStateHandling::equal(RowStateHandling, RowStateHandling) -> Bool

    RowStateHandling::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RowStateHandling::not_equal(x : RowStateHandling, y : RowStateHandling) -> Bool

    RowStateHandling::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn RowStateHandling::to_repr(RowStateHandling) ->
    Repr

    RowStream

    pub struct RowStream {
    cells : Array[Cell]
    index : Int
    }

    RowStream::next

    fn RowStream::next(self : RowStream) -> Array[String]?

    Rows

    pub struct Rows {
    sheet : Worksheet
    entries : Array[RowCells]
    index : Int
    styles : Array[Style]?
    options : Options
    use_1904_format : Bool
    }

    Rows::close

    fn Rows::close(_self : Rows) -> Unit

    Rows::columns

    fn Rows::columns(self : Rows, options? : Options) -> Array[String] raise XlsxError

    Rows::error

    fn Rows::error(_self : Rows) -> XlsxError?

    Rows::get_row_opts

    fn Rows::get_row_opts(self : Rows) -> RowOpts

    Rows::next

    fn Rows::next(self : Rows) -> Bool

    Rows::row_index

    fn Rows::row_index(self : Rows) -> Int?

    Selection

    pub struct Selection {
    sqref : String
    active_cell : String
    pane : String
    } derive(
    Debug
    )

    Selection::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Selection::to_repr(Selection) ->
    Repr

    Selection::with_values

    fn Selection::with_values(sqref? : String, active_cell? : String, pane? : String) -> Selection

    Shape

    pub struct Shape {
    reference : String
    cell : String
    shape_type : String
    macro_alias : String
    macro_name : String
    format : GraphicOptions
    text : String
    paragraph : Array[RichTextRun]
    width : Int
    height : Int
    scale_x : Double
    scale_y : Double
    fill : ShapeFill
    fill_color : String
    fill_transparency : Int
    line : ShapeLine
    line_color : String
    line_width : Double
    name : String
    alt_text : String
    print_object : Bool
    locked : Bool
    positioning : PicturePositioning
    // private fields
    } derive(
    Debug
    )

    Shape::new

    fn Shape::new(reference : String, shape_type : String, macro_name? : String, text? : String, paragraph? : Array[RichTextRun], width? : Int, height? : Int, scale_x? : Double, scale_y? : Double, fill_color? : String, fill_transparency? : Int, line_color? : String, line_width? : Double, name? : String, alt_text? : String, print_object? : Bool, locked? : Bool, positioning? : PicturePositioning) -> Shape raise XlsxError

    Shape::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Shape::to_repr(Shape) ->
    Repr

    ShapeFill

    pub struct ShapeFill {
    color : String?
    transparency : Int?
    } derive(
    Debug
    )

    ShapeFill::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ShapeFill::to_repr(ShapeFill) ->
    Repr

    ShapeFill::with_values

    fn ShapeFill::with_values(color? : String, transparency? : Int) -> ShapeFill raise XlsxError

    ShapeLine

    pub struct ShapeLine {
    color : String?
    width : Double?
    } derive(
    Debug
    )

    ShapeLine::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn ShapeLine::to_repr(ShapeLine) ->
    Repr

    ShapeLine::with_values

    fn ShapeLine::with_values(color? : String, width? : Double) -> ShapeLine

    SharedFormulaLimits

    pub struct SharedFormulaLimits {
    // private fields
    }

    Resource policy for resolving shared-formula followers.

    max_input_chars and max_output_chars apply to one translated formula. max_total_output_chars and max_work_units are cumulative across one structural edit or one top-level calculation, so a compact shared master cannot fan out into an unbounded amount of text or translation work.

    SharedFormulaLimits::max_input_chars

    fn SharedFormulaLimits::max_input_chars(self : SharedFormulaLimits) -> Int

    Returns the maximum accepted character count for one shared master.

    SharedFormulaLimits::max_output_chars

    fn SharedFormulaLimits::max_output_chars(self : SharedFormulaLimits) -> Int

    Returns the maximum output character count for one translated follower.

    SharedFormulaLimits::max_total_output_chars

    fn SharedFormulaLimits::max_total_output_chars(self : SharedFormulaLimits) -> Int

    Returns the cumulative translated-output ceiling for one operation.

    SharedFormulaLimits::max_work_units

    fn SharedFormulaLimits::max_work_units(self : SharedFormulaLimits) -> Int

    Returns the cumulative translation-work ceiling for one operation.

    SharedFormulaLimits::new

    Returns the production shared-formula policy: 64 Ki characters per master, 256 Ki characters per translated follower, 64 Mi characters of cumulative output, and 256 Mi cumulative translation work units per operation.

    SharedFormulaLimits::with_values

    fn SharedFormulaLimits::with_values(max_input_chars? : Int, max_output_chars? : Int, max_total_output_chars? : Int, max_work_units? : Int) -> SharedFormulaLimits raise XlsxError

    Builds a validated shared-formula policy. Every limit must be positive and the per-formula output ceiling cannot exceed the cumulative output ceiling.

    SharedFormulaMaster

    pub struct SharedFormulaMaster {
    // private fields
    }

    One non-empty shared-formula master. The coordinate is retained because OOXML stores follower formulas as relative translations of this cell, not as copies of the master's literal text.

    SharedFormulaMaster::translate_to

    fn SharedFormulaMaster::translate_to(self : SharedFormulaMaster, row : Int, column : Int) -> String raise XlsxError

    Resolves the formula text represented by this shared master at a follower coordinate. Coordinates outside the master's declared shared range are rejected as malformed OOXML. Production per-formula limits are applied; use translate_to_limited when a stricter policy or cancellation is needed.

    SharedFormulaMaster::translate_to_limited

    fn SharedFormulaMaster::translate_to_limited(self : SharedFormulaMaster, row : Int, column : Int, maximum_input_chars~ : Int, maximum_output_chars~ : Int, maximum_work_units~ : Int, cancelled? : () -> Bool) -> (String, Int) raise XlsxError

    Resolves formula text at a follower coordinate with explicit input, output, work, and cancellation limits. The returned work count lets a caller maintain one aggregate translation budget across many cells.

    SheetBackground

    pub struct SheetBackground {
    data : Bytes
    extension : String
    content_type : String
    } derive(
    Debug
    )

    SheetBackground::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn SheetBackground::to_repr(SheetBackground) ->
    Repr

    SheetEntry

    type SheetEntry derive(
    Debug
    )

    SheetEntry::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn SheetEntry::to_repr(SheetEntry) ->
    Repr

    SheetPane

    type SheetPane derive(
    Debug
    )

    SheetPane::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn SheetPane::to_repr(SheetPane) ->
    Repr

    SheetPropsOptions

    pub struct SheetPropsOptions {
    code_name : String?
    enable_format_conditions_calculation : Bool?
    published : Bool?
    auto_page_breaks : Bool?
    fit_to_page : Bool?
    tab_color_indexed : Int?
    tab_color_rgb : String?
    tab_color_theme : Int?
    tab_color_tint : Double?
    outline_summary_below : Bool?
    outline_summary_right : Bool?
    base_col_width : Int?
    default_col_width : Double?
    default_row_height : Double?
    custom_height : Bool?
    zero_height : Bool?
    thick_top : Bool?
    thick_bottom : Bool?
    } derive(
    Debug
    )

    SheetPropsOptions::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn SheetPropsOptions::to_repr(SheetPropsOptions) ->
    Repr

    SheetPropsOptions::with_values

    fn SheetPropsOptions::with_values(code_name? : String, enable_format_conditions_calculation? : Bool, published? : Bool, auto_page_breaks? : Bool, fit_to_page? : Bool, tab_color_indexed? : Int, tab_color_rgb? : String, tab_color_theme? : Int, tab_color_tint? : Double, outline_summary_below? : Bool, outline_summary_right? : Bool, base_col_width? : Int, default_col_width? : Double, default_row_height? : Double, custom_height? : Bool, zero_height? : Bool, thick_top? : Bool, thick_bottom? : Bool) -> SheetPropsOptions

    SheetProtection

    pub struct SheetProtection {
    algorithm_name : String
    password : String
    hash_value : String
    salt_value : String
    spin_count : Int
    sheet : Bool
    objects : Bool
    scenarios : Bool
    format_cells : Bool
    format_columns : Bool
    format_rows : Bool
    insert_columns : Bool
    insert_rows : Bool
    insert_hyperlinks : Bool
    delete_columns : Bool
    delete_rows : Bool
    select_locked_cells : Bool
    sort : Bool
    auto_filter : Bool
    pivot_tables : Bool
    select_unlocked_cells : Bool
    } derive(
    Debug
    )

    SheetProtection::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn SheetProtection::to_repr(SheetProtection) ->
    Repr

    SheetProtectionOptions

    pub struct SheetProtectionOptions {
    algorithm_name : String
    password : String
    auto_filter : Bool
    delete_columns : Bool
    delete_rows : Bool
    edit_objects : Bool
    edit_scenarios : Bool
    format_cells : Bool
    format_columns : Bool
    format_rows : Bool
    insert_columns : Bool
    insert_hyperlinks : Bool
    insert_rows : Bool
    pivot_tables : Bool
    select_locked_cells : Bool
    select_unlocked_cells : Bool
    sort : Bool
    } derive(
    Debug
    )

    SheetProtectionOptions::new

    SheetProtectionOptions::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn SheetProtectionOptions::to_repr(SheetProtectionOptions) ->
    Repr

    SheetProtectionOptions::with_values

    fn SheetProtectionOptions::with_values(algorithm_name? : String, password? : String, auto_filter? : Bool, delete_columns? : Bool, delete_rows? : Bool, edit_objects? : Bool, edit_scenarios? : Bool, format_cells? : Bool, format_columns? : Bool, format_rows? : Bool, insert_columns? : Bool, insert_hyperlinks? : Bool, insert_rows? : Bool, pivot_tables? : Bool, select_locked_cells? : Bool, select_unlocked_cells? : Bool, sort? : Bool) -> SheetProtectionOptions

    SheetState

    pub enum SheetState {
    Visible
    Hidden
    VeryHidden
    } derive(Eq,
    Debug
    )

    SheetState::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn SheetState::equal(SheetState, SheetState) -> Bool

    SheetState::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn SheetState::not_equal(x : SheetState, y : SheetState) -> Bool

    SheetState::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn SheetState::to_repr(SheetState) ->
    Repr

    SheetView

    type SheetView derive(
    Debug
    )

    SheetView::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn SheetView::to_repr(SheetView) ->
    Repr

    SheetViewOptions

    #alias(ViewOptions)
    pub struct SheetViewOptions {
    default_grid_color : Bool?
    right_to_left : Bool?
    show_formulas : Bool?
    show_grid_lines : Bool?
    show_row_col_headers : Bool?
    show_ruler : Bool?
    show_zeros : Bool?
    top_left_cell : String?
    view : String?
    zoom_scale : Double?
    } derive(
    Debug
    )

    SheetViewOptions::new

    SheetViewOptions::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn SheetViewOptions::to_repr(SheetViewOptions) ->
    Repr

    SheetViewOptions::with_values

    fn SheetViewOptions::with_values(default_grid_color? : Bool, right_to_left? : Bool, show_formulas? : Bool, show_grid_lines? : Bool, show_row_col_headers? : Bool, show_ruler? : Bool, show_zeros? : Bool, top_left_cell? : String, view? : String, zoom_scale? : Double) -> SheetViewOptions

    Slicer

    pub struct Slicer {
    name : String
    cache : String
    source_name : String
    cell : String
    table_sheet : String
    table_name : String
    caption : String
    macro_name : String
    width : Int
    height : Int
    display_header : Bool?
    item_desc : Bool
    format : GraphicOptions
    // private fields
    } derive(
    Debug
    )

    Slicer::new

    fn Slicer::new(name : String) -> Slicer raise XlsxError

    Slicer::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Slicer::to_repr(Slicer) ->
    Repr

    SlicerOptions

    type SlicerOptions derive(
    Debug
    )

    SlicerOptions::new

    fn SlicerOptions::new(name : String, cell : String, table_sheet : String, table_name : String) -> SlicerOptions raise XlsxError

    SlicerOptions::set_caption

    fn SlicerOptions::set_caption(self : SlicerOptions, caption : String) -> Unit

    SlicerOptions::set_display_header

    fn SlicerOptions::set_display_header(self : SlicerOptions, display_header : Bool?) -> Unit

    SlicerOptions::set_format

    fn SlicerOptions::set_format(self : SlicerOptions, format : GraphicOptions) -> Unit

    SlicerOptions::set_item_desc

    fn SlicerOptions::set_item_desc(self : SlicerOptions, item_desc : Bool) -> Unit

    SlicerOptions::set_macro_name

    fn SlicerOptions::set_macro_name(self : SlicerOptions, macro_name : String) -> Unit

    SlicerOptions::set_size

    fn SlicerOptions::set_size(self : SlicerOptions, width : Int, height : Int) -> Unit raise XlsxError

    SlicerOptions::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn SlicerOptions::to_repr(SlicerOptions) ->
    Repr

    Sparkline

    pub struct Sparkline {
    range_ref : String
    location : String
    }

    SparklineColor

    pub struct SparklineColor {
    rgb : String?
    theme : Int?
    tint : Double?
    } derive(
    Debug
    )

    SparklineColor::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn SparklineColor::to_repr(SparklineColor) ->
    Repr

    SparklineGroup

    pub struct SparklineGroup {
    sparkline_type : SparklineType
    sparklines : Array[Sparkline]
    options : SparklineGroupOptions
    }

    SparklineGroupOptions

    pub struct SparklineGroupOptions {
    display_empty_cells_as : String
    date_axis : Bool
    line_weight : Double?
    manual_max : Int?
    manual_min : Int?
    markers : Bool
    high : Bool
    low : Bool
    first : Bool
    last : Bool
    negative : Bool
    display_x_axis : Bool
    display_hidden : Bool
    right_to_left : Bool
    color_series : SparklineColor?
    color_negative : SparklineColor?
    color_axis : SparklineColor?
    color_markers : SparklineColor?
    color_first : SparklineColor?
    color_last : SparklineColor?
    color_high : SparklineColor?
    color_low : SparklineColor?
    } derive(
    Debug
    )

    SparklineGroupOptions::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn SparklineGroupOptions::to_repr(SparklineGroupOptions) ->
    Repr

    SparklineOptions

    pub struct SparklineOptions {
    locations : Array[String]
    ranges : Array[String]
    location : Array[String]
    range : Array[String]
    sparkline_type : SparklineType
    style : Int
    weight : Double?
    date_axis : Bool
    markers : Bool
    high : Bool
    low : Bool
    first : Bool
    last : Bool
    negative : Bool
    axis : Bool
    hidden : Bool
    reverse : Bool
    series_color : String?
    negative_color : String?
    markers_color : String?
    first_color : String?
    last_color : String?
    high_color : String?
    low_color : String?
    max : Int
    cust_max : Int
    min : Int
    cust_min : Int
    manual_max : Int?
    manual_min : Int?
    empty_cells : String?
    } derive(
    Debug
    )

    SparklineOptions::clear_manual_max

    fn SparklineOptions::clear_manual_max(self : SparklineOptions) -> Unit

    SparklineOptions::clear_manual_min

    fn SparklineOptions::clear_manual_min(self : SparklineOptions) -> Unit

    SparklineOptions::new

    fn SparklineOptions::new(locations : ArrayView[String], ranges : ArrayView[String]) -> SparklineOptions raise XlsxError

    SparklineOptions::set_axis

    fn SparklineOptions::set_axis(self : SparklineOptions, axis : Bool) -> Unit

    SparklineOptions::set_date_axis

    fn SparklineOptions::set_date_axis(self : SparklineOptions, date_axis : Bool) -> Unit

    SparklineOptions::set_empty_cells

    fn SparklineOptions::set_empty_cells(self : SparklineOptions, mode : StringView) -> Unit raise XlsxError

    SparklineOptions::set_first_color

    fn SparklineOptions::set_first_color(self : SparklineOptions, value : String) -> Unit

    SparklineOptions::set_hidden

    fn SparklineOptions::set_hidden(self : SparklineOptions, hidden : Bool) -> Unit

    SparklineOptions::set_high

    fn SparklineOptions::set_high(self : SparklineOptions, high : Bool) -> Unit

    SparklineOptions::set_high_color

    fn SparklineOptions::set_high_color(self : SparklineOptions, value : String) -> Unit

    SparklineOptions::set_last_color

    fn SparklineOptions::set_last_color(self : SparklineOptions, value : String) -> Unit

    SparklineOptions::set_low

    fn SparklineOptions::set_low(self : SparklineOptions, low : Bool) -> Unit

    SparklineOptions::set_low_color

    fn SparklineOptions::set_low_color(self : SparklineOptions, value : String) -> Unit

    SparklineOptions::set_manual_max

    fn SparklineOptions::set_manual_max(self : SparklineOptions, max : Int) -> Unit

    SparklineOptions::set_manual_min

    fn SparklineOptions::set_manual_min(self : SparklineOptions, min : Int) -> Unit

    SparklineOptions::set_markers

    fn SparklineOptions::set_markers(self : SparklineOptions, markers : Bool) -> Unit

    SparklineOptions::set_markers_color

    fn SparklineOptions::set_markers_color(self : SparklineOptions, value : String) -> Unit

    SparklineOptions::set_negative_color

    fn SparklineOptions::set_negative_color(self : SparklineOptions, value : String) -> Unit

    SparklineOptions::set_reverse

    fn SparklineOptions::set_reverse(self : SparklineOptions, reverse : Bool) -> Unit

    SparklineOptions::set_series_color

    fn SparklineOptions::set_series_color(self : SparklineOptions, value : String) -> Unit

    SparklineOptions::set_style

    fn SparklineOptions::set_style(self : SparklineOptions, style : Int) -> Unit

    SparklineOptions::set_type

    fn SparklineOptions::set_type(self : SparklineOptions, sparkline_type : SparklineType) -> Unit

    SparklineOptions::set_weight

    fn SparklineOptions::set_weight(self : SparklineOptions, weight : Double) -> Unit raise XlsxError

    SparklineOptions::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn SparklineOptions::to_repr(SparklineOptions) ->
    Repr

    SparklineType

    pub(all) enum SparklineType {
    Line
    Column
    WinLoss
    } derive(Eq,
    Debug
    )

    SparklineType::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn SparklineType::equal(SparklineType, SparklineType) -> Bool

    SparklineType::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn SparklineType::not_equal(x : SparklineType, y : SparklineType) -> Bool

    SparklineType::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn SparklineType::to_repr(SparklineType) ->
    Repr

    StreamCell

    pub struct StreamCell {
    value : String
    value_type : CellValueType
    rich_text : Array[RichTextRun]?
    formula : String?
    style_id : Int
    // private fields
    }

    StreamCell::new

    fn StreamCell::new(value : String, formula? : String, style_id? : Int) -> StreamCell

    StreamCell::new_blank

    fn StreamCell::new_blank() -> StreamCell

    A blank slot in a stream row: the column position advances but no cell element is written, mirroring a nil value in Go's stream SetRow.

    StreamCell::new_rich_text

    fn StreamCell::new_rich_text(runs : ArrayView[RichTextRun], formula? : String, style_id? : Int) -> StreamCell raise XlsxError

    StreamCell::new_value

    fn StreamCell::new_value(value : CellValue, formula? : String, style_id? : Int) -> StreamCell

    StreamState

    type StreamState derive(Eq)

    StreamState::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn StreamState::equal(StreamState, StreamState) -> Bool

    StreamState::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn StreamState::not_equal(x : StreamState, y : StreamState) -> Bool

    StreamWriter

    pub struct StreamWriter {
    sheet : Worksheet
    sheet_id : Int
    last_row : Int
    styles : Array[Style]
    closed : Bool
    // private fields
    }

    StreamWriter::add_table

    fn StreamWriter::add_table(self : StreamWriter, range_ref : String, name : String, columns : ArrayView[String], display_name? : String, style_name? : String, show_first_column? : Bool, show_last_column? : Bool, show_row_stripes? : Bool, show_column_stripes? : Bool, show_header_row? : Bool) -> Table raise XlsxError

    StreamWriter::flush

    fn StreamWriter::flush(self : StreamWriter) -> Unit raise XlsxError

    StreamWriter::insert_page_break

    fn StreamWriter::insert_page_break(self : StreamWriter, cell : StringView) -> Unit raise XlsxError

    StreamWriter::merge_cell

    fn StreamWriter::merge_cell(self : StreamWriter, top_left : StringView, bottom_right : StringView) -> Unit raise XlsxError

    StreamWriter::new_duration_cell

    fn StreamWriter::new_duration_cell(self : StreamWriter, value :
    Duration
    , formula? : String, style_id? : Int) -> StreamCell

    Builds a stream cell holding a duration as a fraction of a day, mirroring the Go stream writer's time.Duration handling: the value is stored numerically and no default style is applied. The serial keeps full double precision where Go formats through float32.

    StreamWriter::new_time_cell

    fn StreamWriter::new_time_cell(self : StreamWriter, value :
    ZonedDateTime
    , formula? : String, style_id? : Int) -> StreamCell

    Builds a stream cell holding a datetime, mirroring the Go stream writer's time.Time handling: the value becomes an Excel date serial (reading the workbook's current date-1904 setting) and, when no explicit style_id is given and no row or column style applies at write time, the cell receives the default date/time format (numFmt 22, registered once per stream writer). Pre-epoch datetimes are stored as ISO-8601 text without a default style, like Go's RFC3339 fallback.

    StreamWriter::set_col_outline_level

    fn StreamWriter::set_col_outline_level(self : StreamWriter, col : Int, level : Int) -> Unit raise XlsxError

    StreamWriter::set_col_style

    fn StreamWriter::set_col_style(self : StreamWriter, start_col : Int, end_col : Int, style_id : Int) -> Unit raise XlsxError

    StreamWriter::set_col_visible

    fn StreamWriter::set_col_visible(self : StreamWriter, start_col : Int, end_col : Int, visible : Bool) -> Unit raise XlsxError

    StreamWriter::set_col_width

    fn StreamWriter::set_col_width(self : StreamWriter, start_col : Int, end_col : Int, width : Double) -> Unit raise XlsxError

    StreamWriter::set_panes

    fn StreamWriter::set_panes(self : StreamWriter, panes : Panes) -> Unit raise XlsxError

    StreamWriter::set_row

    fn StreamWriter::set_row(self : StreamWriter, start_ref : String, values : ArrayView[String], row_opts? : RowOpts) -> Unit raise XlsxError

    StreamWriter::set_row_cells

    fn StreamWriter::set_row_cells(self : StreamWriter, start_ref : String, values : ArrayView[StreamCell], row_opts? : RowOpts) -> Unit raise XlsxError

    StreamWriter::sheet_id

    fn StreamWriter::sheet_id(self : StreamWriter) -> Int

    Style

    pub struct Style {
    number_format : NumberFormat?
    num_fmt : Int?
    decimal_places : Int?
    custom_num_fmt : String?
    neg_red : Bool?
    font : Font?
    fill : Fill?
    border : Array[Border]?
    protection : Protection?
    alignment : Alignment?
    } derive(Eq,
    Debug
    )

    Complete cell style specification.

    A Style combines font, fill, border, alignment, number format, and protection settings. Styles are registered with a workbook and referenced by ID in cells.

    Example

    // Create a style with multiple elements
    let style = Style::new()
    .with_font(Font::with_values(bold=true, size=12.0))
    .with_fill(Fill::solid("FFFF00"))
    .with_alignment(Alignment::with_values(horizontal="center"))

    // Register with workbook and apply to cell
    let style_id = workbook.add_style(style)
    sheet.set_cell_style("A1", style_id)

    Style::alignment

    fn Style::alignment(alignment : Alignment) -> Style

    Style::border

    fn Style::border(border : Array[Border]) -> Style

    Creates a Style with only border settings.

    Example

    let box_border = Style::border([
    Border::with_values("left", color="000000", style=1),
    Border::with_values("right", color="000000", style=1),
    Border::with_values("top", color="000000", style=1),
    Border::with_values("bottom", color="000000", style=1),
    ])

    Style::builtin_number_format

    fn Style::builtin_number_format(id : Int) -> Style

    Creates a Style with a built-in number format.

    Parameters

    • id: Built-in format ID (see NumberFormat for common IDs)

    Common IDs

    • 1: 0
    • 2: 0.00
    • 3: #,##0
    • 4: #,##0.00
    • 9: 0%
    • 10: 0.00%
    • 14: mm-dd-yy

    Style::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Style::equal(Style, Style) -> Bool

    Style::excelize_currency_num_fmt

    fn Style::excelize_currency_num_fmt(num_fmt : Int, decimal_places? : Int, neg_red? : Bool) -> Style raise XlsxError

    Style::excelize_custom_num_fmt

    fn Style::excelize_custom_num_fmt(format_code : StringView) -> Style raise XlsxError

    Style::fill

    fn Style::fill(fill : Fill) -> Style

    Creates a Style with only fill settings.

    Style::font

    fn Style::font(font : Font) -> Style

    Creates a Style with only font settings.

    Style::new

    fn Style::new() -> Style

    Creates a new empty Style with all fields set to None.

    Style::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Style::not_equal(x : Style, y : Style) -> Bool

    Style::number_format

    fn Style::number_format(format_code : String) -> Style

    Creates a Style with a custom number format.

    Parameters

    • format_code: Excel number format string like "#,##0.00", "0%", "yyyy-mm-dd"

    Example

    let currency = Style::number_format("$#,##0.00")

    let percent = Style::number_format("0.0%")

    let date = Style::number_format("yyyy-mm-dd")

    Style::protection

    fn Style::protection(protection : Protection) -> Style

    Creates a Style with only protection settings.

    Style::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn Style::to_repr(Style) ->
    Repr

    Style::with_alignment

    fn Style::with_alignment(self : Style, alignment : Alignment) -> Style

    Style::with_border

    fn Style::with_border(self : Style, border : Array[Border]) -> Style

    Returns a new Style with border settings added/replaced.

    Style::with_fill

    fn Style::with_fill(self : Style, fill : Fill) -> Style

    Returns a new Style with fill settings added/replaced.

    Style::with_font

    fn Style::with_font(self : Style, font : Font) -> Style

    Returns a new Style with font settings added/replaced.

    Table

    pub struct Table {
    id : Int
    name : String
    display_name : String
    range : String
    range_ref : String
    columns : Array[String]
    style_name : String
    show_first_column : Bool
    show_last_column : Bool
    show_row_stripes : Bool
    show_column_stripes : Bool
    show_header_row : Bool
    carries_source_formulas : Bool
    }

    TableOptions

    type TableOptions derive(
    Debug
    )

    TableOptions::new

    fn TableOptions::new(range_ref : String) -> TableOptions raise XlsxError

    TableOptions::set_name

    fn TableOptions::set_name(self : TableOptions, name : String) -> Unit

    TableOptions::set_show_column_stripes

    fn TableOptions::set_show_column_stripes(self : TableOptions, value : Bool) -> Unit

    TableOptions::set_show_first_column

    fn TableOptions::set_show_first_column(self : TableOptions, value : Bool) -> Unit

    TableOptions::set_show_header_row

    fn TableOptions::set_show_header_row(self : TableOptions, value : Bool?) -> Unit

    TableOptions::set_show_last_column

    fn TableOptions::set_show_last_column(self : TableOptions, value : Bool) -> Unit

    TableOptions::set_show_row_stripes

    fn TableOptions::set_show_row_stripes(self : TableOptions, value : Bool?) -> Unit

    TableOptions::set_style_name

    fn TableOptions::set_style_name(self : TableOptions, style_name : String) -> Unit

    TableOptions::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn TableOptions::to_repr(TableOptions) ->
    Repr

    Workbook

    pub struct Workbook {
    styles : Array[Style]
    conditional_styles : Array[Style]
    defined_names : Array[DefinedName]
    core_properties : CoreProperties
    app_properties : AppProperties
    custom_properties : Array[CustomProperty]
    vba_project : Bytes?
    workbook_props : WorkbookPropsOptions
    calc_props : CalcPropsOptions
    default_font : String
    default_table_style : String
    default_pivot_style : String
    theme_colors : Array[String]?
    theme_xml : String?
    indexed_colors : Array[String]?
    mru_colors_xml : String?
    styles_ext_lst_xml : String?
    io_context : WorkbookIOContext
    options : Options
    workbook_protection : WorkbookProtection?
    active_sheet_index : Int
    cell_images : Array[CellImage]
    rich_value_images : RichValueImages?
    rich_value_media : Map[String, Bytes]
    package_features : XlsxPackageFeatures
    // private fields
    }

    Workbook::active_sheet_index

    fn Workbook::active_sheet_index(self : Workbook) -> Int

    Workbook::add_chart

    fn Workbook::add_chart(self : Workbook, sheet_name : StringView, reference : String, xml : String) -> Unit raise XlsxError

    Workbook::add_chart_sheet

    fn Workbook::add_chart_sheet(self : Workbook, name : String, chart_xml : String) -> ChartSheet raise XlsxError

    Workbook::add_chart_sheet_with_options

    fn Workbook::add_chart_sheet_with_options(self : Workbook, name : String, opts : ChartOptions) -> ChartSheet raise XlsxError

    Workbook::add_chart_with_options

    fn Workbook::add_chart_with_options(self : Workbook, sheet_name : StringView, reference : String, opts : ChartOptions) -> Unit raise XlsxError

    Workbook::add_comment

    fn Workbook::add_comment(self : Workbook, sheet_name : StringView, comment : Comment) -> Unit raise XlsxError

    Workbook::add_conditional_format_xml

    fn Workbook::add_conditional_format_xml(self : Workbook, sheet_name : StringView, xml : String) -> Unit raise XlsxError

    Workbook::add_data_validation

    fn Workbook::add_data_validation(self : Workbook, sheet_name : StringView, dv : DataValidation) -> Unit raise XlsxError

    Workbook::add_data_validation_list

    fn Workbook::add_data_validation_list(self : Workbook, sheet_name : StringView, range_ref : String, values : ArrayView[String], allow_blank? : Bool) -> Unit raise XlsxError

    Workbook::add_data_validation_xml

    fn Workbook::add_data_validation_xml(self : Workbook, sheet_name : StringView, xml : String) -> Unit raise XlsxError

    Workbook::add_form_control

    fn Workbook::add_form_control(self : Workbook, sheet_name : StringView, control : FormControl) -> Unit raise XlsxError

    fn Workbook::add_header_footer_image(self : Workbook, sheet_name : StringView, options : HeaderFooterImageOptions) -> Unit raise XlsxError

    async fn Workbook::add_header_footer_image_from_file(self : Workbook, sheet_name : StringView, options : HeaderFooterImageOptions) -> Unit raise XlsxError

    Workbook::add_ignored_errors

    fn Workbook::add_ignored_errors(self : Workbook, sheet_name : StringView, range_ref : String, error_type : IgnoredErrorType) -> Unit raise XlsxError

    Workbook::add_image

    fn Workbook::add_image(self : Workbook, sheet_name : StringView, reference : String, data : Bytes, extension : String, content_type : String, offset_x? : Int, offset_y? : Int, scale_x? : Double, scale_y? : Double, hyperlink? : String, hyperlink_type? : HyperlinkType, name? : String, alt_text? : String, lock_aspect_ratio? : Bool, auto_fit? : Bool, auto_fit_ignore_aspect? : Bool, print_object? : Bool, locked? : Bool, positioning? : PicturePositioning) -> Unit raise XlsxError

    Workbook::add_image_with_options

    fn Workbook::add_image_with_options(self : Workbook, sheet_name : StringView, reference : String, data : Bytes, extension : String, content_type : String, options : GraphicOptions) -> Unit raise XlsxError

    Workbook::add_picture

    async fn Workbook::add_picture(self : Workbook, sheet_name : StringView, reference : String, path : String, offset_x? : Int, offset_y? : Int, scale_x? : Double, scale_y? : Double, hyperlink? : String, hyperlink_type? : HyperlinkType, name? : String, alt_text? : String, lock_aspect_ratio? : Bool, auto_fit? : Bool, auto_fit_ignore_aspect? : Bool, print_object? : Bool, locked? : Bool, positioning? : PicturePositioning) -> Unit raise XlsxError

    Workbook::add_picture_from_bytes

    fn Workbook::add_picture_from_bytes(self : Workbook, sheet_name : StringView, reference : String, data : Bytes, extension : String, offset_x? : Int, offset_y? : Int, scale_x? : Double, scale_y? : Double, hyperlink? : String, hyperlink_type? : HyperlinkType, name? : String, alt_text? : String, lock_aspect_ratio? : Bool, auto_fit? : Bool, auto_fit_ignore_aspect? : Bool, print_object? : Bool, locked? : Bool, positioning? : PicturePositioning) -> Unit raise XlsxError

    Workbook::add_picture_from_bytes_with_options

    fn Workbook::add_picture_from_bytes_with_options(self : Workbook, sheet_name : StringView, reference : String, data : Bytes, extension : String, options : GraphicOptions) -> Unit raise XlsxError

    Workbook::add_picture_with_options

    async fn Workbook::add_picture_with_options(self : Workbook, sheet_name : StringView, reference : String, path : String, options : GraphicOptions) -> Unit raise XlsxError

    Workbook::add_pivot_table

    fn Workbook::add_pivot_table(self : Workbook, opts : PivotTableOptions) -> PivotTable raise XlsxError

    Workbook::add_pivot_table_xml

    fn Workbook::add_pivot_table_xml(self : Workbook, sheet_name : StringView, table_xml : String, cache_definition_xml : String, cache_records_xml? : String, name? : String) -> PivotTable raise XlsxError

    Workbook::add_shape

    fn Workbook::add_shape(self : Workbook, sheet_name : StringView, shape : Shape) -> Unit raise XlsxError

    Workbook::add_sheet

    fn Workbook::add_sheet(self : Workbook, name : String) -> Worksheet raise XlsxError

    Creates a new worksheet named name, appends it after the existing sheets, and returns it for immediate use. Names must be unique and follow Excel's rules: 1–31 characters, may not start or end with a single quote ('), and may not contain any of [ ] : * ? / \.

    Raises XlsxError if name is empty, too long, starts/ends with ', contains an invalid character, or duplicates an existing sheet.

    Workbook::add_slicer

    fn Workbook::add_slicer(self : Workbook, sheet_name : StringView, opts : SlicerOptions) -> Unit raise XlsxError

    Workbook::add_slicer_raw

    fn Workbook::add_slicer_raw(self : Workbook, sheet_name : StringView, slicer : Slicer) -> Unit raise XlsxError

    Workbook::add_slicer_with_options

    fn Workbook::add_slicer_with_options(self : Workbook, sheet_name : StringView, opts : SlicerOptions) -> Unit raise XlsxError

    Workbook::add_sparkline

    fn Workbook::add_sparkline(self : Workbook, sheet_name : StringView, options : SparklineOptions) -> Unit raise XlsxError

    Workbook::add_sparkline_basic

    fn Workbook::add_sparkline_basic(self : Workbook, sheet_name : StringView, location : String, range_ref : String, sparkline_type? : SparklineType) -> Unit raise XlsxError

    Workbook::add_sparkline_group

    fn Workbook::add_sparkline_group(self : Workbook, sheet_name : StringView, locations : ArrayView[String], ranges : ArrayView[String], sparkline_type? : SparklineType) -> Unit raise XlsxError

    Workbook::add_sparkline_options

    fn Workbook::add_sparkline_options(self : Workbook, sheet_name : StringView, options : SparklineOptions) -> Unit raise XlsxError

    Workbook::add_style

    fn Workbook::add_style(self : Workbook, style : Style) -> Int

    Workbook::add_table

    fn Workbook::add_table(self : Workbook, sheet_name : StringView, options : TableOptions) -> Table raise XlsxError

    Workbook::add_table_with_columns

    fn Workbook::add_table_with_columns(self : Workbook, sheet_name : StringView, range_ref : String, name : String, columns : ArrayView[String], display_name? : String, style_name? : String, show_first_column? : Bool, show_last_column? : Bool, show_row_stripes? : Bool, show_column_stripes? : Bool, show_header_row? : Bool) -> Table raise XlsxError

    Workbook::add_vba_project

    fn Workbook::add_vba_project(self : Workbook, data : Bytes) -> Unit raise XlsxError

    Workbook::add_vbaproject

    fn Workbook::add_vbaproject(self : Workbook, data : Bytes) -> Unit raise XlsxError

    Workbook::add_vml_drawing_hf_xml

    fn Workbook::add_vml_drawing_hf_xml(self : Workbook, sheet_name : StringView, xml : String) -> Unit raise XlsxError

    Workbook::add_vml_drawing_xml

    fn Workbook::add_vml_drawing_xml(self : Workbook, sheet_name : StringView, xml : String) -> Unit raise XlsxError

    Workbook::app_properties

    fn Workbook::app_properties(self : Workbook) -> AppProperties

    Workbook::app_props

    fn Workbook::app_props(self : Workbook) -> AppProperties

    Workbook::auto_filter

    fn Workbook::auto_filter(self : Workbook, sheet_name : StringView, range_ref : String, options : ArrayView[AutoFilterOption]) -> Unit raise XlsxError

    Workbook::calc_cell_typed

    fn Workbook::calc_cell_typed(self : Workbook, sheet_name : StringView, reference : StringView, formula_limits? : SharedFormulaLimits, cancelled? : () -> Bool) -> CellValue? raise XlsxError

    The typed computed value of a cell — the same evaluation as calc_cell_value, but the result is returned as a CellValue instead of being stringified and number-formatted (mirroring get_cell_value_raw, which returns the stored value the same way). None means an empty result; Some(Numeric/String/Bool/Error) is the typed value. A genuine formula error surfaces as Some(Error("#…")) (Excel stores those); only structural problems (missing sheet, invalid reference) raise XlsxError. Like calc_cell_value, this recomputes on every call with no memoization. Shared-formula resolution uses the cumulative formula_limits policy and polls cancelled during validation and translation.

    Workbook::calc_cell_typed_rc

    fn Workbook::calc_cell_typed_rc(self : Workbook, sheet_name : StringView, row : Int, col : Int, formula_limits? : SharedFormulaLimits, cancelled? : () -> Bool) -> CellValue? raise XlsxError

    Workbook::calc_cell_value

    fn Workbook::calc_cell_value(self : Workbook, sheet_name : StringView, reference : StringView, raw? : Bool, options? : Options, formula_limits? : SharedFormulaLimits, cancelled? : () -> Bool) -> String raise XlsxError

    Calculates and formats one cell. Shared-formula followers resolved during the calculation share formula_limits; cancelled is polled while their masters are validated and translated.

    Workbook::calc_cell_value_rc

    fn Workbook::calc_cell_value_rc(self : Workbook, sheet_name : StringView, row : Int, col : Int, raw? : Bool, options? : Options, formula_limits? : SharedFormulaLimits, cancelled? : () -> Bool) -> String raise XlsxError

    Workbook::charset_transcoder

    fn Workbook::charset_transcoder(self : Workbook, transcoder : (String, Bytes) -> String raise XlsxError) -> Workbook

    Workbook::chart_sheet

    fn Workbook::chart_sheet(self : Workbook, name : StringView) -> ChartSheet?

    Workbook::chart_sheets

    fn Workbook::chart_sheets(self : Workbook) -> ArrayView[ChartSheet]

    Workbook::clear_auto_filter

    fn Workbook::clear_auto_filter(self : Workbook, sheet_name : StringView) -> Unit raise XlsxError

    Workbook::clear_sheet_background

    fn Workbook::clear_sheet_background(self : Workbook, sheet_name : StringView) -> Unit raise XlsxError

    Workbook::col_outline_level

    fn Workbook::col_outline_level(self : Workbook, sheet_name : StringView, col : Int) -> Int raise XlsxError

    Returns the outline (grouping) level of column col (1-based) on sheet_name, or 0 if the column has no explicit level.

    Raises XlsxError if the sheet name is invalid, no matching sheet exists, or col is less than 1.

    Workbook::col_visible

    fn Workbook::col_visible(self : Workbook, sheet_name : StringView, col : Int) -> Bool raise XlsxError

    Reports whether column col (1-based) on sheet_name is visible. Columns with no explicit dimension are visible by default.

    Raises XlsxError if the sheet name is invalid, no matching sheet exists, or col is less than 1.

    Workbook::cols

    fn Workbook::cols(self : Workbook, sheet_name : StringView) -> Cols raise XlsxError

    Workbook::copy_sheet

    fn Workbook::copy_sheet(self : Workbook, from_index : Int, to_index : Int) -> Unit raise XlsxError

    Workbook::core_properties

    fn Workbook::core_properties(self : Workbook) -> CoreProperties

    Workbook::custom_properties

    fn Workbook::custom_properties(self : Workbook) -> Array[CustomProperty]

    Workbook::defined_names

    fn Workbook::defined_names(self : Workbook) -> ArrayView[DefinedName]

    Workbook::delete_chart

    fn Workbook::delete_chart(self : Workbook, sheet_name : StringView, cell : StringView) -> Unit raise XlsxError

    Workbook::delete_comment

    fn Workbook::delete_comment(self : Workbook, sheet_name : StringView, cell : StringView) -> Unit raise XlsxError

    Workbook::delete_data_validation

    fn Workbook::delete_data_validation(self : Workbook, sheet_name : StringView, sqrefs? : Array[String]) -> Unit raise XlsxError

    Workbook::delete_defined_name

    fn Workbook::delete_defined_name(self : Workbook, defined_name : DefinedName) -> Unit raise XlsxError

    Workbook::delete_form_control

    fn Workbook::delete_form_control(self : Workbook, sheet_name : StringView, cell : StringView) -> Unit raise XlsxError

    Workbook::delete_picture

    fn Workbook::delete_picture(self : Workbook, sheet_name : StringView, cell : StringView) -> Unit raise XlsxError

    Workbook::delete_pivot_table

    fn Workbook::delete_pivot_table(self : Workbook, sheet_name : StringView, name : StringView) -> Unit raise XlsxError

    Workbook::delete_sheet

    fn Workbook::delete_sheet(self : Workbook, name : StringView) -> Unit raise XlsxError

    Removes the sheet named name — a worksheet or a chart sheet — from the workbook, together with its cells and sheet-scoped settings. Does nothing if no sheet has that name, or if it is the workbook's only remaining sheet (a workbook must always keep at least one sheet).

    Raises XlsxError if name is not a valid sheet name.

    Workbook::delete_slicer

    fn Workbook::delete_slicer(self : Workbook, name : StringView) -> Unit raise XlsxError

    Workbook::delete_table

    fn Workbook::delete_table(self : Workbook, name : StringView) -> Unit raise XlsxError

    Workbook::doc_properties

    fn Workbook::doc_properties(self : Workbook) -> CoreProperties

    Workbook::duplicate_row

    fn Workbook::duplicate_row(self : Workbook, sheet_name : StringView, row : Int, formula_limits? : SharedFormulaLimits, cancelled? : () -> Bool) -> Unit raise XlsxError

    Duplicates row row (1-based) on sheet_name, inserting the copy directly below as the new row row + 1 and shifting subsequent rows down. Convenience wrapper over duplicate_row_to.

    Raises XlsxError if the sheet name is invalid or no matching sheet exists, StreamModeConflict if the sheet is in stream-writer mode, or if row is less than 1.

    Workbook::duplicate_row_to

    fn Workbook::duplicate_row_to(self : Workbook, sheet_name : StringView, row : Int, target_row : Int, formula_limits? : SharedFormulaLimits, cancelled? : () -> Bool) -> Unit raise XlsxError

    Duplicates row row (1-based) on sheet_name into target_row: it inserts a new row at target_row (shifting existing rows there down) and copies the source row's cells and its full row dimension (height, visibility, outline level, style). Conditional formats, data validations, and single-row merged ranges scoped to the source row are also duplicated onto target_row, though merged-range duplication is skipped if target_row falls inside an existing merge. Defined names are adjusted for the insert. Source-row copying and the nested insertion share one formula_limits budget and cancellation callback.

    Raises XlsxError if the sheet name is invalid or no matching sheet exists, StreamModeConflict if the sheet is in stream-writer mode, if row is less than 1, or if target_row is less than 1 or equal to row.

    Workbook::first_table_with_source_formulas

    fn Workbook::first_table_with_source_formulas(self : Workbook) -> (String, String)?

    The first table (sheet name, table name) whose SOURCE part carried calculated-column or totals-row formula markup — content the model drops and the writer regenerates without. None when no table does.

    Workbook::get_active_sheet_index

    fn Workbook::get_active_sheet_index(self : Workbook) -> Int

    Workbook::get_app_props

    fn Workbook::get_app_props(self : Workbook) -> AppProperties

    Workbook::get_auto_filter

    fn Workbook::get_auto_filter(self : Workbook, sheet_name : StringView) -> AutoFilter? raise XlsxError

    Workbook::get_base_color

    fn Workbook::get_base_color(self : Workbook, hex_color : String, indexed_color : Int, theme_color? : Int) -> String

    Workbook::get_calc_props

    fn Workbook::get_calc_props(self : Workbook) -> CalcPropsOptions

    Workbook::get_cell

    fn Workbook::get_cell(self : Workbook, sheet_name : StringView, reference : StringView) -> String? raise XlsxError

    Workbook::get_cell_formula

    fn Workbook::get_cell_formula(self : Workbook, sheet_name : StringView, reference : StringView) -> String? raise XlsxError

    fn Workbook::get_cell_hyper_link(self : Workbook, sheet_name : StringView, reference : StringView) -> Hyperlink? raise XlsxError

    fn Workbook::get_cell_hyperlink(self : Workbook, sheet_name : StringView, reference : StringView) -> Hyperlink? raise XlsxError

    Workbook::get_cell_rc

    fn Workbook::get_cell_rc(self : Workbook, sheet_name : StringView, row : Int, col : Int) -> String? raise XlsxError

    Workbook::get_cell_rich_text

    fn Workbook::get_cell_rich_text(self : Workbook, sheet_name : StringView, reference : StringView) -> Array[RichTextRun]? raise XlsxError

    Workbook::get_cell_style

    fn Workbook::get_cell_style(self : Workbook, sheet_name : StringView, reference : StringView) -> Int? raise XlsxError

    Workbook::get_cell_style_rc

    fn Workbook::get_cell_style_rc(self : Workbook, sheet_name : StringView, row : Int, col : Int) -> Int? raise XlsxError

    Workbook::get_cell_type

    fn Workbook::get_cell_type(self : Workbook, sheet_name : StringView, reference : StringView) -> CellValueType? raise XlsxError

    Workbook::get_cell_value

    fn Workbook::get_cell_value(self : Workbook, sheet_name : StringView, reference : StringView, raw? : Bool, options? : Options) -> String? raise XlsxError

    Workbook::get_cell_value_from_worksheet_rc

    fn Workbook::get_cell_value_from_worksheet_rc(self : Workbook, worksheet : Worksheet, row : Int, col : Int, raw? : Bool, options? : Options) -> String? raise XlsxError

    Formats one cell from a worksheet that has already been resolved from this workbook. This is the bulk-read counterpart to get_cell_value: callers can resolve a worksheet once, then read many coordinates without repeating the workbook's name lookup for every cell. The cell's own style and the workbook's formatting options have the same semantics as get_cell_value.

    worksheet must be a live entry from this workbook's sheets() view; detached, deleted, replaced, or foreign handles raise InvalidSheetOperation. The row and column are 1-based and must fit the XLSX grid.

    Workbook::get_cell_value_raw

    fn Workbook::get_cell_value_raw(self : Workbook, sheet_name : StringView, reference : StringView) -> CellValue? raise XlsxError

    Workbook::get_cell_value_raw_rc

    fn Workbook::get_cell_value_raw_rc(self : Workbook, sheet_name : StringView, row : Int, col : Int) -> CellValue? raise XlsxError

    Workbook::get_cell_value_rc

    fn Workbook::get_cell_value_rc(self : Workbook, sheet_name : StringView, row : Int, col : Int, raw? : Bool, options? : Options) -> String? raise XlsxError

    Workbook::get_cell_value_styled

    fn Workbook::get_cell_value_styled(self : Workbook, sheet_name : StringView, reference : StringView, style_id : Int, options? : Options) -> String? raise XlsxError

    Formats a stored cell's value using an ARBITRARY style id instead of the cell's own — the display semantic for row/column-inherited styles (the cell attribute wins when set; GetCellValue parity keeps using the cell's own style). Returns None for an absent cell.

    Workbook::get_cell_value_styled_from_worksheet_rc

    fn Workbook::get_cell_value_styled_from_worksheet_rc(self : Workbook, worksheet : Worksheet, row : Int, col : Int, style_id : Int, options? : Options, max_output_chars? : Int) -> String? raise XlsxError

    Formats one cell from an already-resolved worksheet using an explicit style id. This is the bulk-read counterpart to get_cell_value_styled and lets callers apply row/column-inherited styles without repeating a sheet name lookup for every coordinate. Returns None for an absent cell.

    worksheet must be a live entry from this workbook's sheets() view; detached, deleted, replaced, or foreign handles raise InvalidSheetOperation. The row and column are 1-based and style_id must belong to this workbook.

    Workbook::get_col

    fn Workbook::get_col(self : Workbook, sheet_name : StringView, col : Int) -> Array[String] raise XlsxError

    Returns the raw string values of column col (1-based) on sheet_name, from row 1 through the last populated cell; empty cells within that span are returned as empty strings. Returns an empty array for a column with no cells.

    Raises XlsxError if the sheet name is invalid, no matching sheet exists, or col is less than 1.

    Workbook::get_col_dimensions

    fn Workbook::get_col_dimensions(self : Workbook, sheet_name : StringView) -> Array[(Int, ColDimension)] raise XlsxError

    Returns every materialized column dimension record on sheet_name as (column, dimension) pairs sorted by ascending 1-based column index. See Worksheet::materialized_col_dimensions for the record contract.

    Raises XlsxError if the sheet name is invalid or no matching sheet exists.

    Workbook::get_col_outline_level

    fn Workbook::get_col_outline_level(self : Workbook, sheet_name : StringView, col : Int) -> Int raise XlsxError

    Workbook::get_col_style

    fn Workbook::get_col_style(self : Workbook, sheet_name : StringView, col : Int) -> Int? raise XlsxError

    Returns the column-level style id of column col (1-based) on sheet_name, or None if the column has no explicit style.

    Raises XlsxError if the sheet name is invalid, no matching sheet exists, or col is less than 1.

    Workbook::get_col_visible

    fn Workbook::get_col_visible(self : Workbook, sheet_name : StringView, col : Int) -> Bool raise XlsxError

    Workbook::get_col_width

    fn Workbook::get_col_width(self : Workbook, sheet_name : StringView, col : Int) -> Double? raise XlsxError

    Returns the explicitly-set width (in character units) of column col (1-based) on sheet_name, or None if the column uses the sheet default.

    Raises XlsxError if the sheet name is invalid, no matching sheet exists, or col is less than 1.

    Workbook::get_cols

    fn Workbook::get_cols(self : Workbook, sheet_name : StringView, options? : Options) -> Array[Array[String]] raise XlsxError

    Workbook::get_comment

    fn Workbook::get_comment(self : Workbook, sheet_name : StringView, cell : StringView) -> Comment? raise XlsxError

    Returns the classic comment anchored at cell on sheet_name, if present.

    Workbook::get_comments

    fn Workbook::get_comments(self : Workbook, sheet_name : StringView) -> Array[Comment] raise XlsxError

    Workbook::get_conditional_formats

    fn Workbook::get_conditional_formats(self : Workbook, sheet_name : StringView) -> Map[String, Array[ConditionalFormatOptions]] raise XlsxError

    Workbook::get_conditional_style

    fn Workbook::get_conditional_style(self : Workbook, style_id : Int) -> Style raise XlsxError

    Workbook::get_custom_props

    fn Workbook::get_custom_props(self : Workbook) -> Array[CustomProperty]

    Workbook::get_data_validations

    fn Workbook::get_data_validations(self : Workbook, sheet_name : StringView) -> Array[DataValidation] raise XlsxError

    Workbook::get_default_font

    fn Workbook::get_default_font(self : Workbook) -> String

    Workbook::get_defined_name

    fn Workbook::get_defined_name(self : Workbook) -> Array[DefinedName]

    Workbook::get_defined_names

    fn Workbook::get_defined_names(self : Workbook) -> Array[DefinedName]

    Workbook::get_doc_props

    fn Workbook::get_doc_props(self : Workbook) -> CoreProperties

    Workbook::get_form_controls

    fn Workbook::get_form_controls(self : Workbook, sheet_name : StringView) -> Array[FormControl] raise XlsxError

    fn Workbook::get_header_footer(self : Workbook, sheet_name : StringView) -> HeaderFooterOptions? raise XlsxError

    fn Workbook::get_header_footer_images(self : Workbook, sheet_name : StringView) -> Array[HeaderFooterImageOptions] raise XlsxError

    fn Workbook::get_hyper_link_cells(self : Workbook, sheet_name : StringView, link_type? : HyperlinkType) -> Array[String] raise XlsxError

    fn Workbook::get_hyperlink_cells(self : Workbook, sheet_name : StringView, link_type? : HyperlinkType) -> Array[String] raise XlsxError

    fn Workbook::get_hyperlinks(self : Workbook, sheet_name : StringView, link_type? : HyperlinkType) -> Array[Hyperlink] raise XlsxError

    Returns full hyperlink records for sheet_name in worksheet XML/insertion order. See Worksheet::get_hyperlinks for filter semantics.

    Workbook::get_merge_cells

    fn Workbook::get_merge_cells(self : Workbook, sheet_name : StringView) -> Array[String] raise XlsxError

    Workbook::get_merge_cells_info

    fn Workbook::get_merge_cells_info(self : Workbook, sheet_name : StringView, without_values? : Bool, options? : Options) -> Array[MergeCell] raise XlsxError

    Workbook::get_page_layout

    fn Workbook::get_page_layout(self : Workbook, sheet_name : StringView) -> PageLayoutOptions raise XlsxError

    Workbook::get_page_margins

    fn Workbook::get_page_margins(self : Workbook, sheet_name : StringView) -> PageLayoutMarginsOptions raise XlsxError

    Workbook::get_panes

    fn Workbook::get_panes(self : Workbook, sheet_name : StringView) -> Panes raise XlsxError

    Workbook::get_picture_cells

    fn Workbook::get_picture_cells(self : Workbook, sheet_name : StringView) -> Array[String] raise XlsxError

    Workbook::get_pictures

    fn Workbook::get_pictures(self : Workbook, sheet_name : StringView, cell : StringView) -> Array[Image] raise XlsxError

    Workbook::get_pivot_tables

    fn Workbook::get_pivot_tables(self : Workbook, sheet_name : StringView) -> Array[PivotTable] raise XlsxError

    Workbook::get_row

    fn Workbook::get_row(self : Workbook, sheet_name : StringView, row : Int) -> Array[String] raise XlsxError

    Returns the raw string values of row row (1-based) on sheet_name, from column A through the last populated cell; empty cells within that span are returned as empty strings. Returns an empty array for a row with no cells.

    Raises XlsxError if the sheet name is invalid, no matching sheet exists, or row is less than 1.

    Workbook::get_row_dimensions

    fn Workbook::get_row_dimensions(self : Workbook, sheet_name : StringView) -> Array[(Int, RowDimension)] raise XlsxError

    Returns every materialized row dimension record on sheet_name as (row, dimension) pairs sorted by ascending 1-based row index. See Worksheet::materialized_row_dimensions for the record contract.

    Raises XlsxError if the sheet name is invalid or no matching sheet exists.

    Workbook::get_row_height

    fn Workbook::get_row_height(self : Workbook, sheet_name : StringView, row : Int) -> Double? raise XlsxError

    Returns the explicitly-set height (in points) of row row (1-based) on sheet_name, or None if the row uses the sheet default.

    Raises XlsxError if the sheet name is invalid, no matching sheet exists, or row is less than 1.

    Workbook::get_row_outline_level

    fn Workbook::get_row_outline_level(self : Workbook, sheet_name : StringView, row : Int) -> Int raise XlsxError

    Workbook::get_row_style

    fn Workbook::get_row_style(self : Workbook, sheet_name : StringView, row : Int) -> Int? raise XlsxError

    Returns the row-level style id of row row (1-based) on sheet_name, or None if the row has no explicit style.

    Raises XlsxError if the sheet name is invalid, no matching sheet exists, or row is less than 1.

    Workbook::get_row_visible

    fn Workbook::get_row_visible(self : Workbook, sheet_name : StringView, row : Int) -> Bool raise XlsxError

    Workbook::get_rows

    fn Workbook::get_rows(self : Workbook, sheet_name : StringView, options? : Options) -> Array[Array[String]] raise XlsxError

    Workbook::get_sheet_dimension

    fn Workbook::get_sheet_dimension(self : Workbook, sheet_name : StringView) -> String raise XlsxError

    Workbook::get_sheet_index

    fn Workbook::get_sheet_index(self : Workbook, name : StringView) -> Int raise XlsxError

    Workbook::get_sheet_list

    fn Workbook::get_sheet_list(self : Workbook) -> Array[String]

    Returns the names of all sheets — worksheets and chart sheets — in tab order.

    Workbook::get_sheet_map

    fn Workbook::get_sheet_map(self : Workbook) -> Map[Int, String]

    Workbook::get_sheet_name

    fn Workbook::get_sheet_name(self : Workbook, index : Int) -> String?

    Workbook::get_sheet_props

    fn Workbook::get_sheet_props(self : Workbook, sheet_name : StringView) -> SheetPropsOptions raise XlsxError

    Workbook::get_sheet_protection

    fn Workbook::get_sheet_protection(self : Workbook, sheet_name : StringView) -> SheetProtectionOptions raise XlsxError

    Workbook::get_sheet_view

    fn Workbook::get_sheet_view(self : Workbook, sheet_name : StringView, view_index : Int) -> SheetViewOptions raise XlsxError

    Workbook::get_sheet_visible

    fn Workbook::get_sheet_visible(self : Workbook, name : StringView) -> Bool raise XlsxError

    Workbook::get_slicers

    fn Workbook::get_slicers(self : Workbook, sheet_name : StringView) -> Array[Slicer] raise XlsxError

    Workbook::get_style

    fn Workbook::get_style(self : Workbook, style_id : Int) -> Style raise XlsxError

    Workbook::get_tables

    fn Workbook::get_tables(self : Workbook, sheet_name : StringView) -> Array[Table] raise XlsxError

    Workbook::get_workbook_props

    fn Workbook::get_workbook_props(self : Workbook) -> WorkbookPropsOptions

    Workbook::group_sheets

    fn Workbook::group_sheets(self : Workbook, sheets : Array[String]) -> Unit raise XlsxError

    Workbook::insert_cols

    fn Workbook::insert_cols(self : Workbook, sheet_name : StringView, col : Int, count : Int, formula_limits? : SharedFormulaLimits, cancelled? : () -> Bool) -> Unit raise XlsxError

    Inserts count blank columns before column col (1-based) on sheet_name, shifting existing columns right along with their cells and associated features. Defined names referring to the sheet are adjusted to follow the shift. Shared-formula materialization is bounded by formula_limits and polls cancelled before and during fan-out.

    Raises XlsxError if the sheet name is invalid or no matching sheet exists, StreamModeConflict if the sheet is in stream-writer mode, if col is less than 1, or if count is not positive.

    Workbook::insert_page_break

    fn Workbook::insert_page_break(self : Workbook, sheet_name : StringView, cell : StringView) -> Unit raise XlsxError

    Workbook::insert_rows

    fn Workbook::insert_rows(self : Workbook, sheet_name : StringView, row : Int, count : Int, formula_limits? : SharedFormulaLimits, cancelled? : () -> Bool) -> Unit raise XlsxError

    Inserts count blank rows before row row (1-based) on sheet_name, shifting existing rows down along with their cells, row dimensions, merged ranges, hyperlinks, auto filter, tables, sparklines, images, charts, and page breaks. Defined names referring to the sheet are adjusted to follow the shift.

    Shared formulas are materialized transactionally under one cumulative formula_limits budget; cancelled is polled before and during fan-out.

    Raises XlsxError if the sheet name is invalid or no matching sheet exists, StreamModeConflict if the sheet is in stream-writer mode, if row is less than 1, or if count is not positive.

    Workbook::materialized_cell_count

    fn Workbook::materialized_cell_count(self : Workbook) -> Int

    Returns the number of concrete worksheet cell records currently retained by the workbook. Range metadata such as merges and validations is excluded.

    Workbook::materialized_row_column_dimension_count

    fn Workbook::materialized_row_column_dimension_count(self : Workbook) -> Int

    Returns the retained row and column dimension records across all worksheets.

    Workbook::merge_cell

    fn Workbook::merge_cell(self : Workbook, sheet_name : StringView, top_left : StringView, bottom_right : StringView) -> Unit raise XlsxError

    Workbook::merge_cells

    fn Workbook::merge_cells(self : Workbook, sheet_name : StringView, range_ref : String) -> Unit raise XlsxError

    Workbook::move_sheet

    fn Workbook::move_sheet(self : Workbook, source : StringView, target : StringView) -> Unit raise XlsxError

    Workbook::new

    fn Workbook::new(options? : Options) -> Workbook

    Workbook::new_conditional_style

    fn Workbook::new_conditional_style(self : Workbook, style : Style) -> Int

    Workbook::new_sheet

    fn Workbook::new_sheet(self : Workbook, name : String) -> Worksheet raise XlsxError

    Workbook::new_stream_writer

    fn Workbook::new_stream_writer(self : Workbook, sheet_name : StringView) -> StreamWriter raise XlsxError

    Workbook::new_style

    fn Workbook::new_style(self : Workbook, style : Style) -> Int

    Registers style with the workbook and returns its integer style id. Pass that id to the styling APIs — e.g. Worksheet::set_cell_style, Workbook::set_col_style, or the style_id field of RowOpts — to apply the formatting to cells, columns, or rows.

    Workbook::package_features

    fn Workbook::package_features(self : Workbook) -> XlsxPackageFeatures

    The package-level feature flags captured when this workbook was read; XlsxPackageFeatures::none() for API-built workbooks.

    Workbook::protect_sheet

    fn Workbook::protect_sheet(self : Workbook, sheet_name : StringView, options : SheetProtectionOptions) -> Unit raise XlsxError

    Workbook::protect_workbook

    fn Workbook::protect_workbook(self : Workbook, options? : WorkbookProtectionOptions) -> Unit raise XlsxError

    Workbook::read_zip_reader

    async fn[R :
    Reader
    ] Workbook::read_zip_reader(self : Workbook, reader : R, password? : String, options? : Options, limits? : ReadLimits, transcoder? : (String, Bytes) -> String raise XlsxError) -> Workbook

    Replaces this workbook with one read asynchronously from a reader while preserving its read options and transcoder when no overrides are supplied.
    fn Workbook::remove_cell_hyperlink(self : Workbook, sheet_name : StringView, reference : StringView) -> Unit raise XlsxError

    Workbook::remove_col

    fn Workbook::remove_col(self : Workbook, sheet_name : StringView, col : Int, formula_limits? : SharedFormulaLimits, cancelled? : () -> Bool) -> Unit raise XlsxError

    Remove a single column (1-based) and shift columns left.

    Workbook::remove_cols

    fn Workbook::remove_cols(self : Workbook, sheet_name : StringView, col : Int, count : Int, formula_limits? : SharedFormulaLimits, cancelled? : () -> Bool) -> Unit raise XlsxError

    Removes count columns starting at column col (1-based) on sheet_name, shifting the columns to its right leftward and adjusting associated features and defined names accordingly. Shared formulas that survive the removal are bounded by formula_limits; removed cells are never translated, and cancelled is polled during work.

    Raises XlsxError if the sheet name is invalid or no matching sheet exists, StreamModeConflict if the sheet is in stream-writer mode, if col is less than 1, or if count is not positive.

    Workbook::remove_page_break

    fn Workbook::remove_page_break(self : Workbook, sheet_name : StringView, cell : StringView) -> Unit raise XlsxError

    Workbook::remove_row

    fn Workbook::remove_row(self : Workbook, sheet_name : StringView, row : Int, formula_limits? : SharedFormulaLimits, cancelled? : () -> Bool) -> Unit raise XlsxError

    Remove a single row (1-based) and shift rows upward.

    Workbook::remove_rows

    fn Workbook::remove_rows(self : Workbook, sheet_name : StringView, row : Int, count : Int, formula_limits? : SharedFormulaLimits, cancelled? : () -> Bool) -> Unit raise XlsxError

    Removes count rows starting at row row (1-based) on sheet_name, shifting the rows below up and adjusting row dimensions, merged ranges, hyperlinks, auto filter, tables, sparklines, images, charts, page breaks, and defined names accordingly. Shared formulas that survive the removal are materialized under one cumulative formula_limits budget; removed cells are never translated.

    Raises XlsxError if the sheet name is invalid or no matching sheet exists, StreamModeConflict if the sheet is in stream-writer mode, if row is less than 1, or if count is not positive.

    Workbook::replace_comment

    fn Workbook::replace_comment(self : Workbook, sheet_name : StringView, comment : Comment) -> Unit raise XlsxError

    Replaces the existing classic comment at comment.cell on sheet_name.

    Workbook::row_outline_level

    fn Workbook::row_outline_level(self : Workbook, sheet_name : StringView, row : Int) -> Int raise XlsxError

    Returns the outline (grouping) level of row row (1-based) on sheet_name, or 0 if the row has no explicit level.

    Raises XlsxError if the sheet name is invalid, no matching sheet exists, or row is less than 1.

    Workbook::row_stream

    fn Workbook::row_stream(self : Workbook, sheet_name : StringView) -> RowStream raise XlsxError

    Workbook::row_visible

    fn Workbook::row_visible(self : Workbook, sheet_name : StringView, row : Int) -> Bool raise XlsxError

    Reports whether row row (1-based) on sheet_name is visible. Rows with no explicit dimension are visible by default.

    Raises XlsxError if the sheet name is invalid, no matching sheet exists, or row is less than 1.

    Workbook::rows

    fn Workbook::rows(self : Workbook, sheet_name : StringView) -> Rows raise XlsxError

    Workbook::save

    async fn Workbook::save(self : Workbook, options? : Options) -> Unit raise XlsxError

    Workbook::save_as

    async fn Workbook::save_as(self : Workbook, path : String, options? : Options) -> Unit raise XlsxError

    Workbook::search_sheet

    fn Workbook::search_sheet(self : Workbook, sheet_name : StringView, value : String, reg? : Bool) -> Array[String] raise XlsxError

    Workbook::set_active_sheet

    fn Workbook::set_active_sheet(self : Workbook, index : Int) -> Unit

    Marks the sheet at index (0-based, in tab order across worksheets and chart sheets) as the active sheet — the one Excel selects and shows when the workbook is opened. An out-of-range index falls back to the first sheet.

    Workbook::set_app_properties

    fn Workbook::set_app_properties(self : Workbook, props : AppProperties) -> Unit

    Workbook::set_app_props

    fn Workbook::set_app_props(self : Workbook, props : AppProperties) -> Unit

    Workbook::set_auto_filter

    fn Workbook::set_auto_filter(self : Workbook, sheet_name : StringView, range_ref : String, options : ArrayView[AutoFilterOption]) -> Unit raise XlsxError

    Workbook::set_calc_props

    fn Workbook::set_calc_props(self : Workbook, options : CalcPropsOptions?) -> Unit raise XlsxError

    Workbook::set_cell

    fn Workbook::set_cell(self : Workbook, sheet_name : StringView, reference : String, value : String) -> Unit raise XlsxError

    Workbook::set_cell_bool

    fn Workbook::set_cell_bool(self : Workbook, sheet_name : StringView, reference : String, value : Bool) -> Unit raise XlsxError

    Workbook::set_cell_default

    fn Workbook::set_cell_default(self : Workbook, sheet_name : StringView, reference : String, value : String) -> Unit raise XlsxError

    Workbook::set_cell_duration

    fn Workbook::set_cell_duration(self : Workbook, sheet_name : StringView, reference : String, value :
    Duration
    ) -> Unit raise XlsxError

    Sets a cell to a duration value the way Excelize's SetCellValue(time.Duration) does: the value is stored as a fraction of a day and the cell receives a default elapsed-time number format. The serial keeps full double precision (Go rounds through float32).

    Workbook::set_cell_float

    fn Workbook::set_cell_float(self : Workbook, sheet_name : StringView, reference : String, value : Double, precision? : Int, bit_size? : Int) -> Unit raise XlsxError

    Workbook::set_cell_formula

    fn Workbook::set_cell_formula(self : Workbook, sheet_name : StringView, reference : String, formula : String, value? : String) -> Unit raise XlsxError

    Workbook::set_cell_formula_opts

    fn Workbook::set_cell_formula_opts(self : Workbook, sheet_name : StringView, reference : String, formula : String, opts? : FormulaOpts, value? : String) -> Unit raise XlsxError

    Workbook::set_cell_formula_rc

    fn Workbook::set_cell_formula_rc(self : Workbook, sheet_name : StringView, row : Int, col : Int, formula : String, value? : String) -> Unit raise XlsxError

    fn Workbook::set_cell_hyper_link(self : Workbook, sheet_name : StringView, reference : String, target : String, link_type : HyperlinkType, display? : String, tooltip? : String) -> Unit raise XlsxError

    fn Workbook::set_cell_hyperlink(self : Workbook, sheet_name : StringView, reference : String, target : String, link_type : HyperlinkType, display? : String, tooltip? : String) -> Unit raise XlsxError

    fn Workbook::set_cell_hyperlink_opts(self : Workbook, sheet_name : StringView, reference : String, target : String, link_type : HyperlinkType, opts? : HyperlinkOpts) -> Unit raise XlsxError

    Workbook::set_cell_int

    fn Workbook::set_cell_int(self : Workbook, sheet_name : StringView, reference : String, value : Int) -> Unit raise XlsxError

    Workbook::set_cell_rc

    fn Workbook::set_cell_rc(self : Workbook, sheet_name : StringView, row : Int, col : Int, value : String) -> Unit raise XlsxError

    Workbook::set_cell_rich_text

    fn Workbook::set_cell_rich_text(self : Workbook, sheet_name : StringView, reference : String, runs : ArrayView[RichTextRun]) -> Unit raise XlsxError

    Workbook::set_cell_str

    fn Workbook::set_cell_str(self : Workbook, sheet_name : StringView, reference : String, value : String) -> Unit raise XlsxError

    Workbook::set_cell_style

    fn Workbook::set_cell_style(self : Workbook, sheet_name : StringView, reference : String, style_id : Int) -> Unit raise XlsxError

    Workbook::set_cell_style_rc

    fn Workbook::set_cell_style_rc(self : Workbook, sheet_name : StringView, row : Int, col : Int, style_id : Int) -> Unit raise XlsxError

    Workbook::set_cell_time

    fn Workbook::set_cell_time(self : Workbook, sheet_name : StringView, reference : String, value :
    ZonedDateTime
    ) -> Unit raise XlsxError

    Sets a cell to a datetime value the way Excelize's SetCellValue(time.Time) does: the value is stored as an Excel date serial (honoring the workbook's date-1904 setting) and the cell receives a default date/time number format. Datetimes before the epoch are stored as ISO-8601 text instead.

    Workbook::set_cell_uint

    fn Workbook::set_cell_uint(self : Workbook, sheet_name : StringView, reference : String, value : UInt) -> Unit raise XlsxError

    Workbook::set_cell_value

    fn Workbook::set_cell_value(self : Workbook, sheet_name : StringView, reference : String, value : CellValue) -> Unit raise XlsxError

    Workbook::set_cell_value_rc

    fn Workbook::set_cell_value_rc(self : Workbook, sheet_name : StringView, row : Int, col : Int, value : CellValue) -> Unit raise XlsxError

    Workbook::set_col

    fn Workbook::set_col(self : Workbook, sheet_name : StringView, col : Int, values : ArrayView[String]) -> Unit raise XlsxError

    Writes values down column col (1-based) starting at row 1, one raw string per cell, on sheet_name. Cells beyond values are left unchanged.

    Raises XlsxError if the sheet name is invalid or no matching sheet exists, if col is less than 1, or — when values is non-empty — StreamModeConflict if the sheet is in stream-writer mode.

    Workbook::set_col_outline_level

    fn Workbook::set_col_outline_level(self : Workbook, sheet_name : StringView, col : Int, level : Int) -> Unit raise XlsxError

    Sets the outline (grouping) level of column col (1-based) on sheet_name. level must be between 0 and 7 inclusive.

    Raises XlsxError if the sheet name is invalid or no matching sheet exists, StreamModeConflict if the sheet is in stream-writer mode, if col is less than 1, or if level is outside 0..=7.

    Workbook::set_col_outline_level_range

    fn Workbook::set_col_outline_level_range(self : Workbook, sheet_name : StringView, columns : StringView, level : Int) -> Unit raise XlsxError

    Workbook::set_col_style

    fn Workbook::set_col_style(self : Workbook, sheet_name : StringView, col : Int, style_id : Int) -> Unit raise XlsxError

    Sets the column-level style (applied to the whole column) of column col (1-based) on sheet_name. A style_id of 0 clears the column style.

    Raises XlsxError if the sheet name is invalid or no matching sheet exists, InvalidStyleId if style_id is out of range, StreamModeConflict if the sheet is in stream-writer mode, or if col is less than 1.

    Workbook::set_col_style_range

    fn Workbook::set_col_style_range(self : Workbook, sheet_name : StringView, columns : StringView, style_id : Int) -> Unit raise XlsxError

    Workbook::set_col_visible

    fn Workbook::set_col_visible(self : Workbook, sheet_name : StringView, col : Int, visible : Bool) -> Unit raise XlsxError

    Shows (visible true) or hides (visible false) column col (1-based) on sheet_name.

    Raises XlsxError if the sheet name is invalid or no matching sheet exists, StreamModeConflict if the sheet is in stream-writer mode, or if col is less than 1.

    Workbook::set_col_visible_range

    fn Workbook::set_col_visible_range(self : Workbook, sheet_name : StringView, columns : StringView, visible : Bool) -> Unit raise XlsxError

    Workbook::set_col_width

    fn Workbook::set_col_width(self : Workbook, sheet_name : StringView, col : Int, width : Double) -> Unit raise XlsxError

    Sets the width (in character units) of column col (1-based) on sheet_name.

    Raises XlsxError if the sheet name is invalid or no matching sheet exists, StreamModeConflict if the sheet is in stream-writer mode, if col is less than 1, or if width is negative.

    Workbook::set_col_width_range

    fn Workbook::set_col_width_range(self : Workbook, sheet_name : StringView, columns : StringView, width : Double) -> Unit raise XlsxError

    Workbook::set_conditional_format

    fn Workbook::set_conditional_format(self : Workbook, sheet_name : StringView, range_ref : String, options : ArrayView[ConditionalFormatOptions]) -> Unit raise XlsxError

    Workbook::set_core_properties

    fn Workbook::set_core_properties(self : Workbook, props : CoreProperties) -> Unit

    Workbook::set_custom_props

    fn Workbook::set_custom_props(self : Workbook, prop : CustomProperty) -> Unit raise XlsxError

    Workbook::set_default_font

    fn Workbook::set_default_font(self : Workbook, font_name : String) -> Unit

    Workbook::set_defined_name

    fn Workbook::set_defined_name(self : Workbook, defined_name : DefinedName) -> Unit raise XlsxError

    Workbook::set_doc_properties

    fn Workbook::set_doc_properties(self : Workbook, props : CoreProperties) -> Unit

    Workbook::set_doc_props

    fn Workbook::set_doc_props(self : Workbook, props : CoreProperties) -> Unit

    fn Workbook::set_header_footer(self : Workbook, sheet_name : StringView, options : HeaderFooterOptions?) -> Unit raise XlsxError

    Workbook::set_page_layout

    fn Workbook::set_page_layout(self : Workbook, sheet_name : StringView, options : PageLayoutOptions?) -> Unit raise XlsxError

    Workbook::set_page_margins

    fn Workbook::set_page_margins(self : Workbook, sheet_name : StringView, options : PageLayoutMarginsOptions?) -> Unit raise XlsxError

    Workbook::set_panes

    fn Workbook::set_panes(self : Workbook, sheet_name : StringView, panes : Panes) -> Unit raise XlsxError

    Workbook::set_row

    fn Workbook::set_row(self : Workbook, sheet_name : StringView, row : Int, values : ArrayView[String]) -> Unit raise XlsxError

    Writes values across row row (1-based) starting at column A, one raw string per cell, on sheet sheet_name. Cells beyond values are left unchanged.

    Raises XlsxError if the sheet name is invalid or no matching sheet exists, if row is less than 1, or — when values is non-empty — StreamModeConflict if the sheet is in stream-writer mode.

    Workbook::set_row_height

    fn Workbook::set_row_height(self : Workbook, sheet_name : StringView, row : Int, height : Double) -> Unit raise XlsxError

    Sets the height (in points) of row row (1-based) on sheet_name.

    Raises XlsxError if the sheet name is invalid or no matching sheet exists, StreamModeConflict if the sheet is in stream-writer mode, if row is less than 1, or if height is negative.

    Workbook::set_row_outline_level

    fn Workbook::set_row_outline_level(self : Workbook, sheet_name : StringView, row : Int, level : Int) -> Unit raise XlsxError

    Sets the outline (grouping) level of row row (1-based) on sheet_name. level must be between 0 and 7 inclusive.

    Raises XlsxError if the sheet name is invalid or no matching sheet exists, StreamModeConflict if the sheet is in stream-writer mode, if row is less than 1, or if level is outside 0..=7.

    Workbook::set_row_style

    fn Workbook::set_row_style(self : Workbook, sheet_name : StringView, row : Int, style_id : Int) -> Unit raise XlsxError

    Sets the row-level style (applied to the whole row) of row row (1-based) on sheet_name. A style_id of 0 clears the row style. Convenience wrapper over set_row_style_range for a single row.

    Raises XlsxError if the sheet name is invalid or no matching sheet exists, InvalidStyleId if style_id is out of range, StreamModeConflict if the sheet is in stream-writer mode, or if row is less than 1.

    Workbook::set_row_style_range

    fn Workbook::set_row_style_range(self : Workbook, sheet_name : StringView, start : Int, end : Int, style_id : Int) -> Unit raise XlsxError

    Sets the row-level style of every row from start to end (inclusive, 1-based) on sheet_name. A style_id of 0 clears the style for those rows.

    Raises XlsxError if the sheet name is invalid or no matching sheet exists, InvalidStyleId if style_id is out of range, StreamModeConflict if the sheet is in stream-writer mode, if start or end is less than 1, or if end is less than start.

    Workbook::set_row_visible

    fn Workbook::set_row_visible(self : Workbook, sheet_name : StringView, row : Int, visible : Bool) -> Unit raise XlsxError

    Shows (visible true) or hides (visible false) row row (1-based) on sheet_name.

    Raises XlsxError if the sheet name is invalid or no matching sheet exists, StreamModeConflict if the sheet is in stream-writer mode, or if row is less than 1.

    Workbook::set_sheet_background

    fn Workbook::set_sheet_background(self : Workbook, sheet_name : StringView, data : Bytes, extension : String) -> Unit raise XlsxError

    Workbook::set_sheet_background_from_bytes

    fn Workbook::set_sheet_background_from_bytes(self : Workbook, sheet_name : StringView, extension : String, data : Bytes) -> Unit raise XlsxError

    Workbook::set_sheet_background_from_file

    async fn Workbook::set_sheet_background_from_file(self : Workbook, sheet_name : StringView, path : String) -> Unit raise XlsxError

    Workbook::set_sheet_col

    fn Workbook::set_sheet_col(self : Workbook, sheet_name : StringView, cell : StringView, values : ArrayView[String]) -> Unit raise XlsxError

    Workbook::set_sheet_dimension

    fn Workbook::set_sheet_dimension(self : Workbook, sheet_name : StringView, range_ref : StringView) -> Unit raise XlsxError

    Workbook::set_sheet_name

    fn Workbook::set_sheet_name(self : Workbook, source : StringView, target : String) -> Unit raise XlsxError

    Workbook::set_sheet_props

    fn Workbook::set_sheet_props(self : Workbook, sheet_name : StringView, options : SheetPropsOptions?) -> Unit raise XlsxError

    Workbook::set_sheet_row

    fn Workbook::set_sheet_row(self : Workbook, sheet_name : StringView, cell : StringView, values : ArrayView[String]) -> Unit raise XlsxError

    Workbook::set_sheet_view

    fn Workbook::set_sheet_view(self : Workbook, sheet_name : StringView, view_index : Int, options : SheetViewOptions) -> Unit raise XlsxError

    Workbook::set_sheet_visible

    fn Workbook::set_sheet_visible(self : Workbook, name : StringView, visible : Bool, very_hidden? : Bool) -> Unit raise XlsxError

    Workbook::set_workbook_props

    fn Workbook::set_workbook_props(self : Workbook, options : WorkbookPropsOptions?) -> Unit

    Workbook::set_zip_writer

    fn Workbook::set_zip_writer(self : Workbook, writer : (
    Archive
    ) -> Bytes raise) -> Unit

    Workbook::sheet

    fn Workbook::sheet(self : Workbook, name : StringView) -> Worksheet?

    Returns the worksheet named name, or None if there is no worksheet with that name. A chart sheet of the same name is not returned by this method. Use add_sheet to create one, get_sheet_list to enumerate names, or sheets to iterate over every worksheet.

    Workbook::sheet_index

    fn Workbook::sheet_index(self : Workbook, name : StringView) -> Int raise XlsxError

    Workbook::sheet_name

    fn Workbook::sheet_name(self : Workbook, index : Int) -> String?

    Workbook::sheet_row_state_inventory

    fn Workbook::sheet_row_state_inventory(self : Workbook, sheet_name : StringView) -> Array[RowStateEntry] raise XlsxError

    The complete row-addressed inventory for one sheet. Defined names are classified by MIRRORING THE ADJUSTER, not by scope (codex round 1): the probe runs the same qualified-reference scan the insertion staging runs, so a workbook-scoped Data!$A$1048576 lands in Data's DefinedNameReferences (it IS rewritten and can overflow), while a sheet-scoped $A$9 with no qualifier lands in SheetScopedNamesUnadjusted (its text never moves).

    Workbook::sheet_visible

    fn Workbook::sheet_visible(self : Workbook, name : StringView) -> Bool raise XlsxError

    Workbook::sheets

    fn Workbook::sheets(self : Workbook) -> ArrayView[Worksheet]

    Returns every worksheet as a view, for iteration, in the order the sheets were created (not necessarily tab order, and excluding chart sheets). Use sheet to look one up by name, or get_sheet_list for names in tab order.

    Workbook::styles

    fn Workbook::styles(self : Workbook) -> ArrayView[Style]

    Workbook::ungroup_sheets

    fn Workbook::ungroup_sheets(self : Workbook) -> Unit raise XlsxError

    Workbook::unmerge_cell

    fn Workbook::unmerge_cell(self : Workbook, sheet_name : StringView, top_left : StringView, bottom_right : StringView) -> Unit raise XlsxError

    Workbook::unmerge_cells

    fn Workbook::unmerge_cells(self : Workbook, sheet_name : StringView, range_ref : String) -> Unit raise XlsxError

    Workbook::unprotect_sheet

    fn Workbook::unprotect_sheet(self : Workbook, sheet_name : StringView, password? : String) -> Unit raise XlsxError

    Workbook::unprotect_workbook

    fn Workbook::unprotect_workbook(self : Workbook, password? : String) -> Unit raise XlsxError

    Workbook::unset_conditional_format

    fn Workbook::unset_conditional_format(self : Workbook, sheet_name : StringView, range_ref : String) -> Unit raise XlsxError

    Workbook::update_linked_value

    fn Workbook::update_linked_value(self : Workbook) -> Unit raise XlsxError

    Workbook::write

    async fn[W :
    Writer
    ] Workbook::write(self : Workbook, writer : W, options? : Options) -> Unit raise XlsxError

    Workbook::write_to

    async fn[W :
    Writer
    ] Workbook::write_to(self : Workbook, writer : W, options? : Options) -> Int raise XlsxError

    Workbook::write_to_buffer

    fn Workbook::write_to_buffer(self : Workbook, options? : Options) -> Bytes raise XlsxError

    WorkbookIOContext

    pub struct WorkbookIOContext {
    file_path : String?
    zip_writer : (
    Archive
    ) -> Bytes raise?
    charset_transcoder : (String, Bytes) -> String raise XlsxError?
    }

    WorkbookPropsOptions

    pub struct WorkbookPropsOptions {
    date_1904 : Bool?
    filter_privacy : Bool?
    code_name : String?
    } derive(
    Debug
    )

    WorkbookPropsOptions::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn WorkbookPropsOptions::to_repr(WorkbookPropsOptions) ->
    Repr

    WorkbookPropsOptions::with_values

    fn WorkbookPropsOptions::with_values(date_1904? : Bool, filter_privacy? : Bool, code_name? : String) -> WorkbookPropsOptions

    WorkbookProtection

    type WorkbookProtection derive(
    Debug
    )

    WorkbookProtection::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn WorkbookProtection::to_repr(WorkbookProtection) ->
    Repr

    WorkbookProtectionOptions

    pub struct WorkbookProtectionOptions {
    algorithm_name : String
    password : String
    lock_structure : Bool
    lock_windows : Bool
    } derive(
    Debug
    )

    WorkbookProtectionOptions::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn WorkbookProtectionOptions::to_repr(WorkbookProtectionOptions) ->
    Repr

    WorkbookProtectionOptions::with_values

    fn WorkbookProtectionOptions::with_values(algorithm_name? : String, password? : String, lock_structure? : Bool, lock_windows? : Bool) -> WorkbookProtectionOptions

    Worksheet

    pub struct Worksheet {
    name : String
    sheet_views : Array[SheetView]
    dimension_ref : String?
    cells : Array[Cell]
    cell_index : Map[String, Int]
    cell_index_valid : Bool
    shared_formula_masters_index : Map[UInt, SharedFormulaMaster]
    shared_formula_masters_index_valid : Bool
    merged_cells : Array[String]
    hyperlinks : Array[Hyperlink]
    tables : Array[Table]
    sparkline_groups : Array[SparklineGroup]
    pivot_tables : Array[PivotTable]
    images : Array[Image]
    header_footer_images : Array[HeaderFooterImage]
    charts : Array[Chart]
    shapes : Array[Shape]
    form_controls : Array[FormControl]
    slicers : Array[Slicer]
    data_validations : Array[String]
    conditional_formats : Array[String]
    x14_data_bars : Map[String, X14DataBarProps]
    unknown_ext_blocks : Array[String]
    x14_cf_rule_id_counter : Int
    ignored_errors : Array[IgnoredError]
    comments : Array[Comment]
    auto_filter : AutoFilter?
    page_margins : PageLayoutMarginsOptions?
    page_layout : PageLayoutOptions?
    header_footer : HeaderFooterOptions?
    sheet_protection : SheetProtection?
    sheet_props : SheetPropsOptions?
    sheet_background : SheetBackground?
    row_breaks : Array[PageBreak]
    col_breaks : Array[PageBreak]
    row_dimensions : Map[Int, RowDimension]
    col_dimensions : Map[Int, ColDimension]
    state : SheetState
    stream_state : StreamState
    vml_drawing_xml : String?
    vml_drawing_hf_xml : String?
    cell_vm : Map[String, Int]
    // private fields
    }

    Worksheet::add_chart

    fn Worksheet::add_chart(self : Worksheet, reference : String, xml : String) -> Unit raise XlsxError

    Worksheet::add_chart_with_options

    fn Worksheet::add_chart_with_options(self : Worksheet, reference : String, opts : ChartOptions) -> Unit raise XlsxError

    Worksheet::add_comment

    fn Worksheet::add_comment(self : Worksheet, comment : Comment) -> Unit raise XlsxError

    Adds a classic cell comment. The cell must not already have a comment, and the complete record is validated without truncation before mutation.

    Worksheet::add_conditional_format_xml

    fn Worksheet::add_conditional_format_xml(self : Worksheet, xml : String) -> Unit

    Worksheet::add_data_validation

    fn Worksheet::add_data_validation(self : Worksheet, dv : DataValidation) -> Unit raise XlsxError

    Worksheet::add_data_validation_list

    fn Worksheet::add_data_validation_list(self : Worksheet, range_ref : String, values : ArrayView[String], allow_blank? : Bool) -> Unit raise XlsxError

    Worksheet::add_form_control

    fn Worksheet::add_form_control(self : Worksheet, control : FormControl) -> Unit raise XlsxError

    fn Worksheet::add_header_footer_image(self : Worksheet, options : HeaderFooterImageOptions) -> Unit raise XlsxError

    Worksheet::add_ignored_errors

    fn Worksheet::add_ignored_errors(self : Worksheet, range_ref : String, error_type : IgnoredErrorType) -> Unit raise XlsxError

    Worksheet::add_image

    fn Worksheet::add_image(self : Worksheet, reference : String, data : Bytes, extension : String, content_type : String, offset_x? : Int, offset_y? : Int, scale_x? : Double, scale_y? : Double, hyperlink? : String, hyperlink_type? : HyperlinkType, name? : String, alt_text? : String, lock_aspect_ratio? : Bool, auto_fit? : Bool, auto_fit_ignore_aspect? : Bool, print_object? : Bool, locked? : Bool, positioning? : PicturePositioning) -> Unit raise XlsxError

    Worksheet::add_pivot_table_xml

    fn Worksheet::add_pivot_table_xml(self : Worksheet, table_xml : String, cache_definition_xml : String, cache_records_xml? : String, name? : String) -> PivotTable raise XlsxError

    Worksheet::add_shape

    fn Worksheet::add_shape(self : Worksheet, shape : Shape) -> Unit raise XlsxError

    Worksheet::add_slicer

    fn Worksheet::add_slicer(self : Worksheet, slicer : Slicer) -> Unit raise XlsxError

    Worksheet::add_sparkline

    fn Worksheet::add_sparkline(self : Worksheet, location : String, range_ref : String, sparkline_type? : SparklineType) -> Unit raise XlsxError

    Worksheet::add_sparkline_group

    fn Worksheet::add_sparkline_group(self : Worksheet, locations : ArrayView[String], ranges : ArrayView[String], sparkline_type? : SparklineType) -> Unit raise XlsxError

    Worksheet::add_sparkline_options

    fn Worksheet::add_sparkline_options(self : Worksheet, options : SparklineOptions) -> Unit raise XlsxError

    Worksheet::add_table

    fn Worksheet::add_table(self : Worksheet, range_ref : String, name : String, columns : ArrayView[String], display_name? : String, style_name? : String, show_first_column? : Bool, show_last_column? : Bool, show_row_stripes? : Bool, show_column_stripes? : Bool, show_header_row? : Bool) -> Table raise XlsxError

    Worksheet::add_vml_drawing_hf_xml

    fn Worksheet::add_vml_drawing_hf_xml(self : Worksheet, xml : String) -> Unit raise XlsxError

    Worksheet::add_vml_drawing_xml

    fn Worksheet::add_vml_drawing_xml(self : Worksheet, xml : String) -> Unit raise XlsxError

    Worksheet::auto_filter

    fn Worksheet::auto_filter(self : Worksheet) -> AutoFilter?

    Worksheet::charts

    fn Worksheet::charts(self : Worksheet) -> ArrayView[Chart]

    Worksheet::clear_auto_filter

    fn Worksheet::clear_auto_filter(self : Worksheet) -> Unit raise XlsxError

    Worksheet::clear_dimension_ref

    fn Worksheet::clear_dimension_ref(self : Worksheet) -> Unit

    Clears the stored <dimension> so the writer recomputes it from live geometry (cells, merges, tables, auto-filter). A stored value is otherwise echoed verbatim and goes stale after row insertion.

    Worksheet::col_breaks

    fn Worksheet::col_breaks(self : Worksheet) -> ArrayView[PageBreak]

    Worksheet::col_outline_level

    fn Worksheet::col_outline_level(self : Worksheet, col : Int) -> Int raise XlsxError

    Worksheet::col_visible

    fn Worksheet::col_visible(self : Worksheet, col : Int) -> Bool raise XlsxError

    Worksheet::cols

    fn Worksheet::cols(self : Worksheet) -> Cols

    Worksheet::comments

    fn Worksheet::comments(self : Worksheet) -> ArrayView[Comment]

    Worksheet::conditional_format_range_count_limited

    fn Worksheet::conditional_format_range_count_limited(self : Worksheet, maximum_ranges : Int, maximum_work_units : Int, cancelled? : () -> Bool) -> Int raise XlsxError

    Worksheet::conditional_formats

    fn Worksheet::conditional_formats(self : Worksheet) -> ArrayView[String]

    Worksheet::conditional_formats_provably_literal

    fn Worksheet::conditional_formats_provably_literal(self : Worksheet) -> Bool

    Whether this sheet's conditional formatting is PROVABLY free of formula criteria. False whenever proof is impossible: a raw rule carries a formula-typed cfvo (icon sets expose only three of their thresholds through the options surface), x14 extension state exists (its cfvos are not modeled), the parsed rule count disagrees with the raw count (the reader silently skips schema-exotic rule types), or the parsed reader raises. Literal operands inside elements (a cellIs against 5) do NOT disprove literal-ness — callers judge those through the parsed options.

    Worksheet::data_validations

    fn Worksheet::data_validations(self : Worksheet) -> ArrayView[String]

    Worksheet::delete_chart

    fn Worksheet::delete_chart(self : Worksheet, cell : StringView) -> Unit raise XlsxError

    Worksheet::delete_comment

    fn Worksheet::delete_comment(self : Worksheet, cell : StringView) -> Unit raise XlsxError

    Deletes the classic comment anchored at cell.

    Worksheet::delete_data_validation

    fn Worksheet::delete_data_validation(self : Worksheet, sqrefs? : Array[String]) -> Unit raise XlsxError

    Worksheet::delete_pivot_table

    fn Worksheet::delete_pivot_table(self : Worksheet, name : StringView) -> Unit raise XlsxError

    Worksheet::delete_table

    fn Worksheet::delete_table(self : Worksheet, name : StringView) -> Unit raise XlsxError

    Worksheet::effective_style_id_rc

    fn Worksheet::effective_style_id_rc(self : Worksheet, row : Int, col : Int) -> Int raise XlsxError

    Returns the style that formats a resolved coordinate without performing a workbook sheet-name lookup. Precedence matches the write path: an explicit cell style (including style 0) wins, then the row style, then the column style, then style 0. The row and column are 1-based and must fit the XLSX grid.

    Worksheet::first_stored_formula_cell

    fn Worksheet::first_stored_formula_cell(self : Worksheet) -> String?

    The first stored cell on this sheet carrying formula state — the STORED presence test (formula is Some(_), empty text included, so shared-formula followers and array members count). formula_refs() excludes empty formulas and must not be used for wrong-number gates.

    Worksheet::formula_refs

    fn Worksheet::formula_refs(self : Worksheet) -> Array[String]

    The A1 references of every cell on this sheet that carries a non-empty formula, in stored order. A small primitive for tools that need to visit the formula cells (e.g. a formula lint) without scanning the whole grid — the set of formula cells is usually far smaller than the used range.

    A shared-formula slave stores an empty formula string (the master holds the text) and is not independently evaluable, so it is excluded — visiting one would only mislead a caller that evaluates the formula.

    Worksheet::get_cell

    fn Worksheet::get_cell(self : Worksheet, reference : StringView) -> String? raise XlsxError

    Returns the raw string value of the cell at reference (A1 notation), or None if the cell has never been set. Numbers and booleans are returned in their stored string form; use get_cell_value_raw to recover the typed CellValue instead.

    Raises XlsxError if reference is not a valid A1 cell reference.

    Worksheet::get_cell_formula

    fn Worksheet::get_cell_formula(self : Worksheet, reference : StringView) -> String? raise XlsxError

    Worksheet::get_cell_formula_info_rc

    fn Worksheet::get_cell_formula_info_rc(self : Worksheet, row : Int, col : Int) -> CellFormulaInfo? raise XlsxError

    Returns the stored formula metadata for a 1-based coordinate without collapsing an empty shared-formula follower to None.

    This complements get_cell_formula, whose compatibility contract returns only independently stored, non-empty formula text. The returned formula is not translated from a shared master; shared_index identifies that master when a consumer needs its text.
    fn Worksheet::get_cell_hyperlink(self : Worksheet, reference : StringView) -> Hyperlink? raise XlsxError

    Worksheet::get_cell_rc

    fn Worksheet::get_cell_rc(self : Worksheet, row : Int, col : Int) -> String? raise XlsxError

    Worksheet::get_cell_rich_text

    fn Worksheet::get_cell_rich_text(self : Worksheet, reference : StringView) -> Array[RichTextRun]? raise XlsxError

    Worksheet::get_cell_style

    fn Worksheet::get_cell_style(self : Worksheet, reference : StringView) -> Int? raise XlsxError

    Worksheet::get_cell_style_rc

    fn Worksheet::get_cell_style_rc(self : Worksheet, row : Int, col : Int) -> Int? raise XlsxError

    Worksheet::get_cell_value_raw

    fn Worksheet::get_cell_value_raw(self : Worksheet, reference : StringView) -> CellValue? raise XlsxError

    Returns the typed CellValue stored at reference (A1 notation), or None if the cell has never been set. Unlike get_cell, this preserves the value type (number vs. text vs. boolean) rather than coercing to a string.

    Raises XlsxError if reference is not a valid A1 cell reference.

    Worksheet::get_col

    fn Worksheet::get_col(self : Worksheet, col : Int) -> Array[String] raise XlsxError

    Worksheet::get_col_style

    fn Worksheet::get_col_style(self : Worksheet, col : Int) -> Int? raise XlsxError

    Worksheet::get_col_width

    fn Worksheet::get_col_width(self : Worksheet, col : Int) -> Double? raise XlsxError

    Worksheet::get_cols

    fn Worksheet::get_cols(self : Worksheet) -> Array[Array[String]]

    Worksheet::get_comment

    fn Worksheet::get_comment(self : Worksheet, cell : StringView) -> Comment? raise XlsxError

    Returns the classic comment anchored at cell, if one exists.

    Worksheet::get_conditional_formats

    fn Worksheet::get_conditional_formats(self : Worksheet) -> Map[String, Array[ConditionalFormatOptions]] raise XlsxError

    Worksheet::get_data_validations

    fn Worksheet::get_data_validations(self : Worksheet) -> Array[DataValidation] raise XlsxError

    fn Worksheet::get_header_footer_images(self : Worksheet) -> Array[HeaderFooterImageOptions]

    fn Worksheet::get_hyperlink_cells(self : Worksheet, link_type? : HyperlinkType) -> Array[String]

    Returns the cell references of hyperlinks in the worksheet, mirroring Excelize's GetHyperLinkCells. Omitting link_type returns every hyperlink; External and Location filter by hyperlink kind; Unset (Excelize's "None") returns no references.
    fn Worksheet::get_hyperlinks(self : Worksheet, link_type? : HyperlinkType) -> Array[Hyperlink]

    Returns full hyperlink records in worksheet XML/insertion order. References are canonical A1 cell/range references. Omitting link_type returns every hyperlink; External and Location filter by hyperlink kind; Unset returns no records.

    Worksheet::get_panes

    fn Worksheet::get_panes(self : Worksheet) -> Panes

    Worksheet::get_row

    fn Worksheet::get_row(self : Worksheet, row : Int) -> Array[String] raise XlsxError

    Returns the raw string values of row row (1-based) from column A through the last populated cell. Empty cells within that span are returned as empty strings. Returns an empty array for a row with no cells.

    Raises XlsxError if row is less than 1.

    Worksheet::get_row_height

    fn Worksheet::get_row_height(self : Worksheet, row : Int) -> Double? raise XlsxError

    Worksheet::get_rows

    fn Worksheet::get_rows(self : Worksheet) -> Array[Array[String]]

    Worksheet::get_sheet_protection

    fn Worksheet::get_sheet_protection(self : Worksheet) -> SheetProtectionOptions

    Returns the protection options currently applied to the worksheet, mirroring Excelize's GetSheetProtection: stored restrictive flags are inverted back into permission options, the password is never returned, and an unprotected sheet yields all-default options.
    fn Worksheet::hyperlink_count(self : Worksheet) -> Int

    Returns the retained hyperlink count without copying cell references.

    Worksheet::ignored_errors

    fn Worksheet::ignored_errors(self : Worksheet) -> ArrayView[IgnoredError]

    Worksheet::images

    fn Worksheet::images(self : Worksheet) -> ArrayView[Image]

    Worksheet::materialized_col_dimensions

    fn Worksheet::materialized_col_dimensions(self : Worksheet) -> Array[(Int, ColDimension)]

    Returns every materialized column dimension record of this worksheet as (column, dimension) pairs sorted by ascending 1-based column index.

    Only columns with an explicitly stored dimension record — a custom width, a hidden flag, a non-zero outline level, or a column-level style — are yielded; columns using the sheet defaults are absent. For every yielded pair the fields agree with the per-index getters: width with get_col_width, hidden with !col_visible, outline_level with col_outline_level, and style_id with get_col_style.

    Example

    test {
    let workbook = @xlsx.Workbook::new()
    ignore(workbook.add_sheet("Sheet1"))
    let sheet = workbook.sheet("Sheet1").unwrap()
    debug_inspect(sheet.materialized_col_dimensions(), content="[]")
    workbook.set_col_width("Sheet1", 3, 18.5)
    workbook.set_col_visible("Sheet1", 1, false)
    let summary : Array[(Int, Double?, Bool)] = []
    for entry in sheet.materialized_col_dimensions() {
    let (col, dim) = entry
    summary.push((col, dim.width, dim.hidden))
    }
    debug_inspect(summary, content="[(1, None, true), (3, Some(18.5), false)]")
    }

    Worksheet::materialized_row_dimensions

    fn Worksheet::materialized_row_dimensions(self : Worksheet) -> Array[(Int, RowDimension)]

    Returns every materialized row dimension record of this worksheet as (row, dimension) pairs sorted by ascending 1-based row index.

    Only rows with an explicitly stored dimension record — a custom height, a hidden flag, a non-zero outline level, or a row-level style — are yielded. Rows using the sheet defaults are absent even when they hold cells, and dimension-only rows beyond the stored-cell extent are included. For every yielded pair the fields agree with the per-index getters: height with get_row_height, hidden with !row_visible, outline_level with row_outline_level, and style_id with get_row_style.

    Example

    test {
    let workbook = @xlsx.Workbook::new()
    ignore(workbook.add_sheet("Sheet1"))
    let sheet = workbook.sheet("Sheet1").unwrap()
    debug_inspect(sheet.materialized_row_dimensions(), content="[]")
    workbook.set_row_visible("Sheet1", 7000, false)
    workbook.set_row_height("Sheet1", 2, 24.5)
    let summary : Array[(Int, Double?, Bool)] = []
    for entry in sheet.materialized_row_dimensions() {
    let (row, dim) = entry
    summary.push((row, dim.height, dim.hidden))
    }
    debug_inspect(summary, content="[(2, Some(24.5), false), (7000, None, true)]")
    }

    Worksheet::max_col

    fn Worksheet::max_col(self : Worksheet) -> Int

    Worksheet::max_row

    fn Worksheet::max_row(self : Worksheet) -> Int

    Worksheet::merge_cells

    fn Worksheet::merge_cells(self : Worksheet, range_ref : String) -> Unit raise XlsxError

    Merges the rectangular range range_ref (e.g. "A1:C3") into a single region; the top-left cell's value is displayed across the whole range. The range is normalized, so "C3:A1" and "A1:C3" are equivalent.

    Raises XlsxError if range_ref is not a valid range reference.

    Worksheet::merged_cells

    fn Worksheet::merged_cells(self : Worksheet) -> ArrayView[String]

    Worksheet::name

    fn Worksheet::name(self : Worksheet) -> String

    Worksheet::new

    fn Worksheet::new(name : String) -> Worksheet

    Worksheet::pivot_tables

    fn Worksheet::pivot_tables(self : Worksheet) -> ArrayView[PivotTable]

    Worksheet::protect_sheet

    fn Worksheet::protect_sheet(self : Worksheet, options : SheetProtectionOptions) -> Unit raise XlsxError

    Worksheet::raw_data_validation_criteria

    fn Worksheet::raw_data_validation_criteria(self : Worksheet) -> Array[RawDataValidationCriteria]

    The raw criteria of every stored data validation, x14 and other uninterpretable entries included as "opaque". XML entity escapes are decoded; formula quote doubling is NOT collapsed.
    fn Worksheet::remove_cell_hyperlink(self : Worksheet, reference : StringView) -> Unit raise XlsxError

    Worksheet::replace_comment

    fn Worksheet::replace_comment(self : Worksheet, comment : Comment) -> Unit raise XlsxError

    Replaces the existing classic comment at comment.cell without changing comment enumeration order. The complete replacement is validated before mutation.

    Worksheet::row_breaks

    fn Worksheet::row_breaks(self : Worksheet) -> ArrayView[PageBreak]

    Worksheet::row_state_inventory

    fn Worksheet::row_state_inventory(self : Worksheet) -> Array[RowStateEntry]

    Every row-addressed feature PRESENT on this worksheet, with extent and insertion handling. Absent classes are omitted. Sheet-scoped defined names live on the workbook — use Workbook::sheet_row_state_inventory for the complete picture.

    Worksheet::row_stream

    fn Worksheet::row_stream(self : Worksheet) -> RowStream

    Worksheet::row_visible

    fn Worksheet::row_visible(self : Worksheet, row : Int) -> Bool raise XlsxError

    Worksheet::rows

    fn Worksheet::rows(self : Worksheet) -> Rows

    Worksheet::set_auto_filter

    fn Worksheet::set_auto_filter(self : Worksheet, range_ref : String, options : ArrayView[AutoFilterOption]) -> Unit raise XlsxError

    Worksheet::set_cell

    fn Worksheet::set_cell(self : Worksheet, reference : String, value : String) -> Unit raise XlsxError

    Writes value into the cell at reference (A1 notation, e.g. "B2") as a raw string, overwriting any existing content while preserving the cell's style. For numeric or boolean values use set_cell_value; for dates and times use Workbook::set_cell_time; for formulas use set_cell_formula.

    Raises XlsxError if reference is not a valid A1 cell reference, or StreamModeConflict if the worksheet is currently driven by a stream writer.

    Worksheet::set_cell_formula

    fn Worksheet::set_cell_formula(self : Worksheet, reference : String, formula : String, value? : String) -> Unit raise XlsxError

    Worksheet::set_cell_formula_opts

    fn Worksheet::set_cell_formula_opts(self : Worksheet, reference : String, formula : String, opts? : FormulaOpts, value? : String) -> Unit raise XlsxError

    Worksheet::set_cell_formula_rc

    fn Worksheet::set_cell_formula_rc(self : Worksheet, row : Int, col : Int, formula : String, value? : String) -> Unit raise XlsxError

    fn Worksheet::set_cell_hyperlink(self : Worksheet, reference : String, target : String, link_type : HyperlinkType, display? : String, tooltip? : String) -> Unit raise XlsxError

    Sets or replaces the hyperlink identified by reference. Cells inside a merged range use its top-left anchor as their shared identity. External targets accept the documented safe URI schemes or forward-slash relative paths; Location targets reject explicit URI schemes. Empty, XML-illegal, unsafe-scheme, and backslash-form external targets raise InvalidHyperlink before mutation. Passing Unset removes the anchored hyperlink.
    fn Worksheet::set_cell_hyperlink_opts(self : Worksheet, reference : String, target : String, link_type : HyperlinkType, opts? : HyperlinkOpts) -> Unit raise XlsxError

    Worksheet::set_cell_rc

    fn Worksheet::set_cell_rc(self : Worksheet, row : Int, col : Int, value : String) -> Unit raise XlsxError

    Worksheet::set_cell_rich_text

    fn Worksheet::set_cell_rich_text(self : Worksheet, reference : String, runs : ArrayView[RichTextRun]) -> Unit raise XlsxError

    Worksheet::set_cell_style

    fn Worksheet::set_cell_style(self : Worksheet, reference : String, style_id : Int) -> Unit raise XlsxError

    Worksheet::set_cell_style_rc

    fn Worksheet::set_cell_style_rc(self : Worksheet, row : Int, col : Int, style_id : Int) -> Unit raise XlsxError

    Worksheet::set_cell_value

    fn Worksheet::set_cell_value(self : Worksheet, reference : String, value : CellValue) -> Unit raise XlsxError

    Writes a typed CellValue (number, string, boolean, …) into the cell at reference (A1 notation), overwriting existing content while preserving the cell's style. Prefer this over set_cell when the value should be stored as a number or boolean rather than as text (so Excel treats it numerically).

    Raises XlsxError if reference is not a valid A1 cell reference, or StreamModeConflict if the worksheet is currently driven by a stream writer.

    Worksheet::set_cell_value_rc

    fn Worksheet::set_cell_value_rc(self : Worksheet, row : Int, col : Int, value : CellValue) -> Unit raise XlsxError

    Worksheet::set_col

    fn Worksheet::set_col(self : Worksheet, col : Int, values : ArrayView[String]) -> Unit raise XlsxError

    Writes values down column col (1-based) starting at row 1, one raw string per cell. Cells beyond values are left unchanged.

    Raises XlsxError if col is less than 1, or — when values is non-empty StreamModeConflict if the worksheet is driven by a stream writer.

    Worksheet::set_col_visible

    fn Worksheet::set_col_visible(self : Worksheet, col : Int, visible : Bool) -> Unit raise XlsxError

    Worksheet::set_col_width

    fn Worksheet::set_col_width(self : Worksheet, col : Int, width : Double) -> Unit raise XlsxError

    Worksheet::set_conditional_format

    fn Worksheet::set_conditional_format(self : Worksheet, range_ref : String, options : ArrayView[ConditionalFormatOptions]) -> Unit raise XlsxError

    fn Worksheet::set_header_footer(self : Worksheet, options : HeaderFooterOptions?) -> Unit raise XlsxError

    Worksheet::set_page_layout

    fn Worksheet::set_page_layout(self : Worksheet, options : PageLayoutOptions?) -> Unit raise XlsxError

    Worksheet::set_page_margins

    fn Worksheet::set_page_margins(self : Worksheet, options : PageLayoutMarginsOptions?) -> Unit raise XlsxError

    Worksheet::set_panes

    fn Worksheet::set_panes(self : Worksheet, panes : Panes) -> Unit raise XlsxError

    Worksheet::set_row

    fn Worksheet::set_row(self : Worksheet, row : Int, values : ArrayView[String]) -> Unit raise XlsxError

    Writes values across row row (1-based) starting at column A, one raw string per cell. Cells beyond values are left unchanged. For a single typed cell use set_cell_value; to build very large sheets efficiently use the stream writer (Workbook::new_stream_writer).

    Raises XlsxError if row is less than 1, or — when values is non-empty StreamModeConflict if the worksheet is driven by a stream writer.

    Worksheet::set_row_height

    fn Worksheet::set_row_height(self : Worksheet, row : Int, height : Double) -> Unit raise XlsxError

    Worksheet::set_row_outline_level

    fn Worksheet::set_row_outline_level(self : Worksheet, row : Int, level : Int) -> Unit raise XlsxError

    Worksheet::set_row_style

    fn Worksheet::set_row_style(self : Worksheet, row : Int, style_id : Int) -> Unit raise XlsxError

    Worksheet::set_row_visible

    fn Worksheet::set_row_visible(self : Worksheet, row : Int, visible : Bool) -> Unit raise XlsxError

    Worksheet::set_sheet_background

    fn Worksheet::set_sheet_background(self : Worksheet, data : Bytes, extension : String) -> Unit raise XlsxError

    Worksheet::shapes

    fn Worksheet::shapes(self : Worksheet) -> ArrayView[Shape]

    Worksheet::shared_formula_master

    fn Worksheet::shared_formula_master(self : Worksheet, shared_index : UInt, cancelled? : () -> Bool) -> SharedFormulaMaster? raise XlsxError

    Looks up one validated shared-formula master without cloning the complete master index. Parsed worksheets already carry an eagerly validated index; programmatically edited worksheets rebuild it lazily before this lookup. cancelled is polled while rebuilding a stale index.

    Worksheet::shared_formula_masters

    fn Worksheet::shared_formula_masters(self : Worksheet) -> Map[UInt, SharedFormulaMaster] raise XlsxError

    Returns non-empty shared-formula masters keyed by OOXML shared index after validating that every follower has exactly one master and lies within the master's declared range. Conflicting or incomplete groups are rejected.

    Worksheet::sheet_background

    fn Worksheet::sheet_background(self : Worksheet) -> SheetBackground?

    Worksheet::sheet_protection

    fn Worksheet::sheet_protection(self : Worksheet) -> SheetProtection?

    Worksheet::slicers

    fn Worksheet::slicers(self : Worksheet) -> ArrayView[Slicer]

    Returns the slicers attached to this worksheet in stored order.

    Worksheet::sparkline_groups

    fn Worksheet::sparkline_groups(self : Worksheet) -> ArrayView[SparklineGroup]

    Worksheet::state

    fn Worksheet::state(self : Worksheet) -> SheetState

    Worksheet::stored_cell_count

    fn Worksheet::stored_cell_count(self : Worksheet) -> Int

    Returns the number of stored cell records in this worksheet in O(1) time. This is a representation count, not the area of the logical used range; callers can use it to preflight aggregate scan work before iteration.

    Worksheet::tables

    fn Worksheet::tables(self : Worksheet) -> ArrayView[Table]

    Worksheet::unmerge_cells

    fn Worksheet::unmerge_cells(self : Worksheet, range_ref : String) -> Unit raise XlsxError

    Worksheet::unprotect_sheet

    fn Worksheet::unprotect_sheet(self : Worksheet, password? : String) -> Unit raise XlsxError

    Worksheet::unset_conditional_format

    fn Worksheet::unset_conditional_format(self : Worksheet, range_ref : String) -> Unit raise XlsxError

    Worksheet::used_bounds_limited

    fn Worksheet::used_bounds_limited(self : Worksheet, maximum_stored_cells~ : Int, cancelled? : () -> Bool) -> (Int, Int) raise XlsxError

    Returns the used (max_row, max_column) bounds after rejecting a worksheet whose stored-cell representation exceeds maximum_stored_cells. The O(1) length preflight happens before the scan, so duplicate coordinates cannot hide unbounded preprocessing behind a tiny logical used range.

    Worksheet::vml_drawing_hf_xml

    fn Worksheet::vml_drawing_hf_xml(self : Worksheet) -> String?

    Worksheet::vml_drawing_xml

    fn Worksheet::vml_drawing_xml(self : Worksheet) -> String?

    WriteLimits

    pub struct WriteLimits {
    // private fields
    }

    A fail-closed resource policy for XLSX serialization. The archive ceilings are enforced before each generated part is retained; multi-stage VML composition also debits every simultaneously retained intermediate from the remaining aggregate allowance. max_output_bytes is then enforced by ZIP's storage-free sizing pass before package allocation.

    WriteLimits::max_archive_entries

    fn WriteLimits::max_archive_entries(self : WriteLimits) -> Int

    WriteLimits::max_entry_uncompressed_bytes

    fn WriteLimits::max_entry_uncompressed_bytes(self : WriteLimits) -> Int

    WriteLimits::max_output_bytes

    fn WriteLimits::max_output_bytes(self : WriteLimits) -> Int

    WriteLimits::max_total_uncompressed_bytes

    fn WriteLimits::max_total_uncompressed_bytes(self : WriteLimits) -> Int

    WriteLimits::with_values

    fn WriteLimits::with_values(max_output_bytes~ : Int, max_archive_entries~ : Int, max_entry_uncompressed_bytes~ : Int, max_total_uncompressed_bytes~ : Int) -> WriteLimits raise XlsxError

    Builds a validated XLSX write policy. All ceilings must be positive and the per-entry expansion ceiling cannot exceed the aggregate archive ceiling.

    X14DataBarProps

    type X14DataBarProps derive(
    Debug
    )

    X14DataBarProps::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn X14DataBarProps::to_repr(X14DataBarProps) ->
    Repr

    XlsxPackageFeatures

    pub struct XlsxPackageFeatures {
    external_links : Bool
    query_tables : Bool
    connections : Bool
    pivot_parts : Bool
    vml_present : Bool
    unknown_parts : Bool
    first_external_link : String?
    first_query_table : String?
    first_connections : String?
    first_pivot_part : String?
    first_vml_part : String?
    first_unknown_part : String?
    } derive(Eq,
    Debug
    )

    Raw-package feature flags with the first triggering part path per class (archive entry order, deterministic per package). API-built workbooks carry XlsxPackageFeatures::none().

    XlsxPackageFeatures::equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn XlsxPackageFeatures::equal(XlsxPackageFeatures, XlsxPackageFeatures) -> Bool

    XlsxPackageFeatures::none

    XlsxPackageFeatures::not_equal

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn XlsxPackageFeatures::not_equal(x : XlsxPackageFeatures, y : XlsxPackageFeatures) -> Bool

    XlsxPackageFeatures::to_repr

    #deprecated("implicit trait-method promotion is being removed; call via the trait")
    fn XlsxPackageFeatures::to_repr(XlsxPackageFeatures) ->
    Repr

    builtin_number_format_code

    fn builtin_number_format_code(id : Int) -> String?

    Returns the format-code string equivalent to builtin number-format id, or None when the engine has no fixed code for it.

    Coverage is exactly the ids the engine's value formatter (format_number_builtin) renders with a fixed, culture-independent pattern under default Options:

    • 1: 0
    • 2: 0.00
    • 3: #,##0
    • 4: #,##0.00
    • 9: 0%
    • 10: 0.00%
    • 14: mm-dd-yy
    • 15: d-mmm-yy
    • 16: d-mmm
    • 17: mmm-yy
    • 18: h:mm AM/PM
    • 19: h:mm:ss AM/PM
    • 20: hh:mm
    • 21: hh:mm:ss
    • 22: m/d/yy hh:mm

    Every other id returns None:

    • 0 (General) is the default rendering — the formatter passes the raw value through, which no explicit format code reproduces exactly;
    • 27-36, 50-62 and 67-81 are language builtins whose meaning depends on the workbook culture (see Options::culture_info);
    • the remaining builtin ids (5-8, 11-13, 23-26, 37-49, 63-66, ...) are ones the formatter does not implement and renders as the raw value.

    Equivalence domain — the returned code renders identically to the builtin id for numeric cell values under default Options (builtin_num_fmt_test.mbt pins this per id over a value battery). Outside that domain the engine's two paths intentionally differ:

    • text cells render raw under any Builtin format but are run through the code's text/literal pattern under a Custom format;
    • for the date-pattern ids (14-22), a value that is not a valid non-negative date serial renders as the raw value under the builtin id while the custom-code path may prefix a minus sign;
    • ids 14, 15, 20, 21 and 22 honor the Options short_date_pattern / long_date_pattern / long_time_pattern overrides when rendered as builtins; the codes returned here are the default patterns used when no override is set.

    Example

    test {
    debug_inspect(
    @xlsx.builtin_number_format_code(4),
    content="Some(\"#,##0.00\")",
    )
    debug_inspect(
    @xlsx.builtin_number_format_code(14),
    content="Some(\"mm-dd-yy\")",
    )
    debug_inspect(@xlsx.builtin_number_format_code(0), content="None")
    debug_inspect(@xlsx.builtin_number_format_code(30), content="None")
    }

    cell_name_to_coordinates

    fn cell_name_to_coordinates(cell : StringView) -> (Int, Int) raise XlsxError

    Converts a cell reference to (column, row) coordinates, both 1-based, e.g. "C5" -> (3, 5). The tuple is column-first, not row-first. Inverse of coordinates_to_cell_name.

    Raises InvalidCellRef if cell is malformed, its row exceeds 1048576, or its column exceeds 16384 (the sheet grid limits).

    column_name_to_number

    fn column_name_to_number(name : StringView) -> Int raise XlsxError

    Converts a column-letter reference to its 1-based column number, e.g. "A" -> 1, "Z" -> 26, "AA" -> 27. Letters are case-insensitive. Inverse of column_number_to_name.

    Raises InvalidCellRef if name is empty, contains any non-letter character, or names a column beyond XFD (16,384).

    column_number_to_name

    fn column_number_to_name(col : Int) -> String raise XlsxError

    Converts a 1-based column number to its letter reference, e.g. 1 -> "A", 26 -> "Z", 27 -> "AA". Inverse of column_name_to_number.

    Raises InvalidCellRef if col is less than 1 or greater than 16,384.

    conditional_format_xml_range_count_limited

    fn conditional_format_xml_range_count_limited(xml : StringView, maximum_ranges : Int, maximum_work_units : Int, cancelled? : () -> Bool) -> Int raise XlsxError

    Counts normalized sqref ranges directly from retained conditional-format fragments. Unlike get_conditional_formats, this does not materialize rule objects, maps, or copied range strings. Both retained-source work and the result are bounded, and long scans poll cancelled.

    coordinates_to_cell_name

    fn coordinates_to_cell_name(col : Int, row : Int, abs? : Bool) -> String raise XlsxError

    Converts 1-based (col, row) coordinates to a cell reference, e.g. (3, 5) -> "C5". When abs is true each part is prefixed with $ to form an absolute reference, so (3, 5) -> "$C$5". Inverse of cell_name_to_coordinates.

    Raises InvalidCellRef if col or row is less than 1, the row exceeds 1048576, or the column exceeds 16384.

    decrypt

    fn decrypt(raw : BytesView, options? : Options, limits? : ReadLimits, cancelled? : () -> Bool) -> Bytes raise XlsxError

    encrypt

    fn encrypt(raw : BytesView, options? : Options) -> Bytes raise XlsxError

    excel_date_to_time

    fn excel_date_to_time(excel_date : Double, use_1904_format? : Bool) ->
    ZonedDateTime
    raise XlsxError

    hsl_to_rgb

    fn hsl_to_rgb(h : Double, s : Double, l : Double) -> (Byte, Byte, Byte)

    join_cell_name

    fn join_cell_name(col : StringView, row : Int) -> String raise XlsxError

    Joins column letters and a 1-based row number into a cell reference, e.g. ("A", 2) -> "A2". The column is normalized (lowercase letters are upper-cased), so ("a", 2) also yields "A2". Inverse of split_cell_name.

    Raises InvalidCellRef if col is outside A:XFD or row is outside 1:1048576.

    open_file

    async fn open_file(path : String, password? : String, options? : Options, limits? : ReadLimits, transcoder? : (String, Bytes) -> String raise XlsxError) -> Workbook

    open_reader

    async fn[R :
    Reader
    ] open_reader(reader : R, password? : String, options? : Options, limits? : ReadLimits, transcoder? : (String, Bytes) -> String raise XlsxError) -> Workbook

    Reads an XLSX package asynchronously from a reader, stopping before the configured compressed package limit is exceeded. Reader I/O is cancellable; the subsequent resource-bounded semantic parse is currently synchronous.

    read

    fn read(bytes : BytesView, options? : Options, limits? : ReadLimits, cancelled? : () -> Bool, transcoder? : (String, Bytes) -> String raise XlsxError) -> Workbook raise XlsxError

    Reads an XLSX package under a fail-closed resource policy.

    limits applies to the compressed source, ZIP structure and expansion, and individual XML-like OOXML parts. Encrypted packages require read_with_password or an Options value containing a password.

    read_bounded_archive

    fn read_bounded_archive(archive :
    Archive
    , options? : Options, limits? : ReadLimits, cancelled? : () -> Bool, transcoder? : (String, Bytes) -> String raise XlsxError) -> Workbook raise XlsxError

    Reads a workbook from an already-inflated ZIP archive without a second decompression pass. Resource limits are enforced on the materialized archive (entry count, entry size, total size, and per-part XML budget) before any part is parsed.

    read_with_password

    fn read_with_password(bytes : BytesView, password : String, options? : Options, limits? : ReadLimits, cancelled? : () -> Bool, transcoder? : (String, Bytes) -> String raise XlsxError) -> Workbook raise XlsxError

    Reads an XLSX package with an explicit password under a fail-closed resource policy. Resource failures remain ResourceLimitExceeded; a verified password preserves malformed-package errors, while an unverified payload that is not a valid ZIP is classified as InvalidPassword.

    read_zip_reader

    async fn[R :
    Reader
    ] read_zip_reader(reader : R, password? : String, options? : Options, limits? : ReadLimits, transcoder? : (String, Bytes) -> String raise XlsxError) -> Workbook

    Alias for open_reader, retained as the streaming XLSX read entry point.

    rgb_to_hsl

    fn rgb_to_hsl(r : Byte, g : Byte, b : Byte) -> (Double, Double, Double)

    set_random_source

    fn set_random_source(source : (Int) -> Bytes) -> Unit

    Installs a custom source for the random bytes used in workbook encryption and sheet-protection salts, verifiers, and keys. The function receives the byte count required and must return exactly that many bytes.

    Use this to supply cryptographically secure entropy (Go excelize uses crypto/rand for these values). The built-in fallback is a ChaCha8 generator seeded from wall-clock entropy whitened through SHA-256: best-effort unique per process (millisecond clock resolution means simultaneous process starts can collide), and not a CSPRNG.

    split_cell_name

    fn split_cell_name(cell : StringView) -> (String, Int) raise XlsxError

    Splits a cell reference into its column letters and 1-based row number, e.g. "AB12" -> ("AB", 12). Column letters are upper-cased and absolute- reference $ markers are ignored, so "$C$5" -> ("C", 5).

    Raises InvalidCellRef if cell is empty, is missing either the column or the row part, has letters following digits, contains an unexpected character, or lies outside A1:XFD1048576.

    theme_color

    fn theme_color(base_color : String, tint : Double) -> String

    time_to_excel_date

    fn time_to_excel_date(value :
    ZonedDateTime
    , use_1904_format? : Bool) -> Double

    Converts a wall-clock datetime to an Excel serial date, mirroring Excelize's timeToExcelTime: days are counted from the 1900 epoch (1899-12-31, with the intentional Lotus 1-2-3 bug adding one day from 1900-03-01 onward) or from the 1904 epoch (1904-01-01). Values before the epoch return 0. The datetime's own wall-clock fields are used, so the zone offset never shifts the stored value.

    Example

    test {
    let dt = @time.date_time(2021, 1, 1, hour=12)
    inspect(@xlsx.time_to_excel_date(dt), content="44197.5")
    }

    validate_ooxml_bounded_archive

    fn validate_ooxml_bounded_archive(archive :
    Archive
    , limits? : ReadLimits) -> Array[String] raise XlsxError

    Validates an already-inflated OOXML package without decompressing it again. The same pristine bounded-provenance contract as read_bounded_archive applies.

    validate_ooxml_package

    fn validate_ooxml_package(bytes : BytesView, limits? : ReadLimits) -> Array[String] raise XlsxError

    Checks the structural invariants an OOXML (xlsx) package must satisfy for Microsoft Excel to open it without a repair prompt, returning the list of problems found (empty when the package is well-formed). These are the package-level rules the OOXML schema validator does not fully cover and that are the common causes of Excel's "we found a problem" dialog:

    • the archive is a readable zip
    • [Content_Types].xml and the root _rels/.rels exist
    • every part is covered by a Default (by extension) or an Override content type
    • every relationship target (except external ones) resolves to a part that exists in the package
    • no duplicate part names, and part names are well-formed
    • the core workbook parts are present

    This is a fast, dependency-free complement to the Microsoft OpenXML SDK validator: it runs entirely in MoonBit, so it can be asserted on every workbook a test generates. An unreadable ZIP is returned as a stable finding; resource-policy violations raise ResourceLimitExceeded. Findings are capped at 256 while scanning, with a final omission marker when more defects exist, so diagnostics cannot become an attacker-sized second tree.

    write

    fn write(workbook : Workbook) -> Bytes raise XlsxError

    write_limited

    fn write_limited(workbook : Workbook, limits : WriteLimits) -> Bytes raise XlsxError

    Serializes a workbook under a fail-closed construction and output policy. Generated parts are bounded before archive retention, then the ZIP writer proves the final package size before allocating its output buffer. A custom zip writer installed on the workbook is intentionally bypassed so it cannot weaken this policy.

    write_with_password

    fn write_with_password(workbook : Workbook, password : String) -> Bytes raise XlsxError

    Source Files