openpyxl.preserve.x14
paper-xlsx 0.2.1 API reference
Conditional-formatting edits on sheets whose rules carry x14 twins.
The model DROPS the <x14:id> twin pointer when re-rendering classic rules (measured), so twin-bearing CF is never re-rendered here: the classic run is COMPOSED from original bytes — surviving blocks verbatim, deleted blocks omitted, sqref-only changes patched in place — and only genuinely NEW blocks are model-rendered (new rules have no twins). The extLst twin entries are patched in lockstep: xm:sqref text follows the classic sqref, and deleted rules' twin entries are removed. Anything this composition cannot express refuses, exactly as v0 did.
check_dv_coexistence
funccheck_dv_coexistence(ws, scan, original)Refuse only when a classic DV range intersects an x14 DV range — otherwise classic edits proceed and the x14 block stays verbatim.
paramwsparamscanparamoriginalplan_cf_composed
funcplan_cf_composed(wb, ws, scan, original, armed_blocks)(classic_cf_replacement_bytes, extlst_replacement_or_None).
armed_blocks: the arm-time model renders (regions._render_cf
tuple), positionally corresponding to the original document's classic
CF elements.
paramwbparamwsparamscanparamoriginalparamarmed_blockssheet_has_cf_twins
funcsheet_has_cf_twins(scan, original)True when classic rules carry twin pointers or the extLst carries x14 conditional formattings.
paramscanparamoriginal