all2md.utils.spreadsheet
Shared utilities for spreadsheet parsers (XLSX, ODS, CSV).
This module provides common functions used across spreadsheet format parsers to reduce code duplication and improve maintainability.
- all2md.utils.spreadsheet.sanitize_cell_text(text: Any, preserve_newlines: bool = False) str
Convert any cell value to a safe string for AST Text node.
Note: Markdown escaping is handled by the renderer, not here. We only normalize whitespace and convert to string.
- Parameters:
text (Any) – Cell value to sanitize
preserve_newlines (bool, default False) – If True, preserve newlines as <br> tags; if False, replace with spaces
- Returns:
Sanitized cell text
- Return type:
str
- all2md.utils.spreadsheet.build_table_ast(header: list[str], rows: list[list[str]], alignments: list[Literal['left', 'center', 'right']]) Table
Build an AST Table from header, rows, and alignments.
- Parameters:
header (list[str]) – Header row cells
rows (list[list[str]]) – Data rows
alignments (list[Alignment]) – Column alignments (‘left’, ‘center’, ‘right’)
- Returns:
AST Table node
- Return type:
- all2md.utils.spreadsheet.create_table_cell(text: str, alignment: Literal['left', 'center', 'right'] | None = None, colspan: int = 1, rowspan: int = 1) TableCell
Create a table cell with optional spans and alignment.
- Parameters:
text (str) – Cell text content
alignment (Alignment or None, default None) – Cell alignment (‘left’, ‘center’, ‘right’)
colspan (int, default 1) – Number of columns this cell spans
rowspan (int, default 1) – Number of rows this cell spans
- Returns:
AST TableCell node
- Return type:
- all2md.utils.spreadsheet.transform_header_case(header: list[str], case_mode: str) list[str]
Transform header case based on case mode.
- Parameters:
header (list[str]) – Header row
case_mode (str) – Case transformation mode: ‘preserve’, ‘title’, ‘upper’, or ‘lower’
- Returns:
Transformed header
- Return type:
list[str]
- all2md.utils.spreadsheet.trim_rows(rows: list[list[str]], trim_mode: Literal['none', 'leading', 'trailing', 'both']) list[list[str]]
Trim empty rows based on trim mode.
- Parameters:
rows (list[list[str]]) – Rows to trim
trim_mode ({'none', 'leading', 'trailing', 'both'}) – Trimming mode
- Returns:
Trimmed rows
- Return type:
list[list[str]]
- all2md.utils.spreadsheet.trim_columns(rows: list[list[str]], trim_mode: Literal['none', 'leading', 'trailing', 'both']) list[list[str]]
Trim empty columns based on trim mode.
- Parameters:
rows (list[list[str]]) – Rows to trim columns from
trim_mode ({'none', 'leading', 'trailing', 'both'}) – Trimming mode
- Returns:
Rows with trimmed columns
- Return type:
list[list[str]]