v1.7.0 — ODS conditional formatting & pivot tables
ODS conditional formatting and pivot tables (ROADMAP Track D, item 5) — the two remaining xlsx-skill features that were ODS gaps.
Added
add_conditional_format.py— highlight a cell range by value or formula condition (value > N,value between A B,formula:EXPR, …) with--background,--text-color,--bold,--italic. Each rule is written both as acalcext:conditional-format(the form LibreOffice renders) and as an ODF-corestyle:map; repeating the command on the same range stacks another rule.add_pivot_table.py— compute a pivot (group-by +sum/count/average/min/max) and write the result grid into the target range, plus a matching ODF-coretable:data-pilot-tableso LibreOffice treats it as a real, refreshable pivot.--rowssupports nested grouping;--columnsis optional; the target sheet is created if missing.list_pivot_tables.py— list alltable:data-pilot-tabledefinitions as JSON.
Changed
parse_rangemoved fromadd_data_validation.pytoods_common.pyand is now shared; it also accepts the fully-qualifiedSheet.A1:Sheet.C10range form.validate_refs.py(ODS) gains checks for danglingstyle:mapstyle references and pivot tables whose source/target range names an unknown sheet.validate_refs.py --strictis now extension-aware: the documentedcalcextLibreOffice namespace is excluded from the OASIS core-schema check and reported as a warning instead of an error.
Full changelog: CHANGELOG.md
🤖 Generated with Claude Code