Coverage matrix
What the engines support, refuse, and preserve
One table per file format. Each feature family lists how many census cases the engine supports, preserves unchanged, or refuses with a typed error. Counts are generated from the evidence committed with the engines.
How to read the statuses
- Supported
- The operation succeeds through the public API, and the census records a workflow that saves the document and checks the result.
- Preserved
- The feature has no editing API here. Its bytes survive unrelated edits unchanged, so a round trip keeps it.
- Refused
- The request fails with a typed error. The source file stays byte-identical and no output is written, so a refused request leaves your file untouched.
A case is one combination of feature, operation, file profile, and API recorded in the census. Features the census has not yet qualified carry no status here, and nothing on this page claims them. Evidence ids name the census each row comes from.
Coverage by format
XLSX feature families (WolfXL)
| Feature family | Supported | Preserved | Refused |
|---|---|---|---|
| Alignment, number formats, and named stylesp4-census-xl-styles-alignment-numfmt-named | 5,347 | 674 | 860 |
| AutoFilter and sort statep4-census-xl-autofilter-sort-state | 1,163 | 259 | 114 |
| Calculation chain and cached valuesp4-census-xl-calc-chain-cached-values | 93 | 281 | 49 |
| Calculation properties and date systemsp4-census-xl-calc-properties-date-systems | 691 | 105 | 57 |
| Chart axes, titles, and legendsp4-census-xl-chart-axes-titles-legend | 3,132 | 324 | 264 |
| Chart data and embedded workbooksp4-census-xl-chart-data-embedded-workbook | 50 | 81 | 15 |
| Chart extensionsp4-census-xl-chart-extensions | 304 | 284 | 63 |
| Chart series formattingp4-census-xl-chart-series-format | 1,368 | 144 | 183 |
| Chart types and plot areasp4-census-xl-chart-types-plot | 1,726 | 192 | 384 |
| Conditional formattingp4-census-xl-conditional-formatting | 1,352 | 312 | 312 |
| Connections and query tablesp4-census-xl-connections-query-tables | 361 | 164 | 836 |
| Core math functionsp4-census-xl-functions-math-core | 456 | 82 | 156 |
| Cross-workbook formula copyp4-census-xl-cross-workbook-formula-copy | 78 | 30 | 180 |
| Data model, OLAP, and Power Queryp4-census-xl-data-model-olap-power-query | 649 | 167 | 134 |
| Date, time, cube, and web functionsp4-census-xl-functions-datetime-cube-web-absent | 144 | 347 | 700 |
| Defined namesp4-census-xl-defined-names | 316 | 64 | 38 |
| Document properties, custom XML, and alt textp4-census-xl-docprops-customxml-alt-text | 3,666 | 268 | 548 |
| Drawing anchorsp4-census-xl-drawing-anchors | 402 | 24 | 76 |
| DrawingML miscellaneous extensionsp4-census-xl-drawingml-misc-extensions | 112 | 192 | 10 |
| DrawingML text bodiesp4-census-xl-drawingml-text-body | 1,516 | 348 | 60 |
| Dynamic arrays and spill rangesp4-census-xl-dynamic-array-spill | 451 | 66 | 28 |
| Encryption and signaturesp4-census-xl-encryption-signatures | 622 | 74 | 176 |
| Engineering functionsp4-census-xl-functions-engineering | 314 | 59 | 24 |
| External linksp4-census-xl-external-links | 134 | 32 | 12 |
| extLst preservationp4-census-xl-extlst-preservation | 97 | 621 | 64 |
| Fills, lines, effects, and 3Dp4-census-xl-fills-lines-effects-3d | 983 | 142 | 60 |
| Financial functionsp4-census-xl-functions-financial | 277 | 55 | 153 |
| Font, fill, and border stylesp4-census-xl-styles-font-fill-border | 5,880 | 1,176 | 1,176 |
| Form controls and ActiveX linkagep4-census-xl-form-controls-activex-linkage | 1,566 | 168 | 324 |
| Format qualification matrixp4-census-xl-format-qualification-matrix | 13 | None | None |
| Formula coercion and error valuesp4-census-xl-formula-coercion-errors | 44 | 668 | None |
| Formula grammarp4-census-xl-formula-grammar | 5,850 | 652 | 1,304 |
| LAMBDA, LET, and helper functionsp4-census-xl-lambda-let-helpers | 608 | 64 | 96 |
| Legacy and adjacent formatsp4-census-xl-legacy-adjacent-formats | None | 1 | 66 |
| Legacy notes and VMLp4-census-xl-legacy-notes-vml | 1,118 | 150 | 501 |
| Lookup and information functionsp4-census-xl-functions-lookup-information | 241 | 58 | 168 |
| Markup compatibilityp4-census-xl-markup-compat | 110 | 632 | 26 |
| Media, OLE, macros, and custom UIp4-census-xl-media-ole-macro-customui | 80 | 118 | 28 |
| ODS profilep4-census-xl-ods-profile-leaves | 239 | 2 | 16 |
| Package parts and relationshipsp4-census-xl-opc-graph-parts | 174 | 146 | 360 |
| Package profilesp4-census-xl-package-profile-matrix | 1,003 | 76 | 406 |
| Pagination and renderingp4-census-xl-pagination-render | 324 | None | 174 |
| PDF export optionsp4-census-xl-export-formats-pdf-options | 119 | None | 76 |
| Pivot cache recordsp4-census-xl-pivot-cache-records | 330 | 138 | 68 |
| Pivot filters, styles, and calculationsp4-census-xl-pivot-filters-styles-calc | 606 | 256 | 279 |
| Pivot table layoutp4-census-xl-pivot-table-layout | 745 | 213 | 159 |
| Recalculation, volatile functions, and iterationp4-census-xl-recalc-graph-volatile-iterative | 360 | None | 240 |
| Rich values and entitiesp4-census-xl-rich-values-entities | 899 | 243 | 365 |
| SDK object-model semanticsp4-census-xl-sdk-object-model-semantics | 170 | 1 | 28 |
| SDK stream and callback lifecyclep4-census-xl-sdk-stream-callback-lifecycle | 26 | 2 | 16 |
| SDK threading and cancellationp4-census-xl-sdk-threading-cancellation-policy | 14 | None | 26 |
| Shared strings, limits, and atomicityp4-census-xl-shared-strings-limits-atomicity | 216 | 14 | 45 |
| Slicers and timelinesp4-census-xl-slicers-timelines | 166 | 102 | 58 |
| SmartArtp4-census-xl-smartart | None | 284 | None |
| Statistical functions (set A)p4-census-xl-functions-statistical-a | 1,560 | 233 | 466 |
| Statistical functions (set B)p4-census-xl-functions-statistical-b | 634 | 80 | 160 |
| Streaming read and write-only modesp4-census-xl-streaming-read-write-only | 304 | None | 27 |
| Structural edits and reference retargetingp4-census-xl-structural-edit-retargeting | 963 | 180 | 381 |
| Table lifecyclep4-census-xl-tables-lifecycle | 1,186 | 156 | 1,154 |
| Text and logical functionsp4-census-xl-functions-text-logical | 320 | 61 | 2 |
| Theme colors and fontsp4-census-xl-theme-color-font | 1,217 | 198 | 222 |
| Tolerant repair limitsp4-census-xl-tolerant-repair-limits | 42 | 24 | 354 |
| Worksheet chart bindingp4-census-xl-worksheet-chart-binding | 227 | 62 | 50 |
| XLS (BIFF8) profilep4-census-xl-xls-biff8-profile-leaves | 77 | 41 | 23 |
| XLSB featuresp4-census-xl-xlsb-feature-leaves | 200 | None | 12 |
DOCX feature families (WolfDocx)
| Feature family | Supported | Preserved | Refused |
|---|---|---|---|
| Chart and SmartArt consumersp4-census-docx-chart-smartart-consumers | 65 | 32 | 54 |
| Chart axes, titles, and legendsp4-census-docx-chart-axes-titles-legend | 613 | 311 | 682 |
| Chart data and embedded workbooksp4-census-docx-chart-data-embedded-workbook | 83 | 64 | 35 |
| Chart extensionsp4-census-docx-chart-extensions | 86 | 82 | 51 |
| Chart series formattingp4-census-docx-chart-series-format | 127 | 68 | 141 |
| Chart types and plot areasp4-census-docx-chart-types-plot | 174 | 84 | 190 |
| Co-authoring and comment extensionsp4-census-docx-coauthor-comment-extensions | 23 | 87 | 23 |
| Comments, bookmarks, and rangesp4-census-docx-comments-bookmarks-ranges | 126 | 65 | 53 |
| Content-control data binding and glossaryp4-census-docx-sdt-databinding-glossary | 32 | 46 | 69 |
| Content-control kinds and propertiesp4-census-docx-sdt-kinds-properties | 244 | 64 | 72 |
| Document assembly and style importp4-census-docx-assembly-import-styles | 29 | 13 | 2 |
| Document comparisonp4-census-docx-compare | 182 | 76 | 74 |
| Document properties, custom XML, and alt textp4-census-docx-docprops-customxml-alt-text | 1,191 | 280 | 208 |
| Document protection policyp4-census-docx-document-protection-policy | 138 | 92 | 132 |
| Document-information and numbering fieldsp4-census-docx-field-types-docinfo-numbering | 650 | 360 | 434 |
| Drawing canvases, groups, and shape extensionsp4-census-docx-canvas-group-shape-extensions | 18 | 112 | 50 |
| Drawing hosts and text boxesp4-census-docx-drawing-hosts-textboxes | 81 | 104 | 97 |
| Drawing relationship remappingp4-census-docx-drawing-relationship-remap | 67 | 37 | 23 |
| DrawingML miscellaneous extensionsp4-census-docx-drawingml-misc-extensions | 89 | 66 | 53 |
| DrawingML text bodiesp4-census-docx-drawingml-text-body | 268 | 136 | 144 |
| Encryption and signaturesp4-census-docx-encryption-signatures | 258 | 142 | 275 |
| Equations (OMath)p4-census-docx-omath | 286 | 39 | 19 |
| Export conversionsp4-census-docx-export-conversions | 106 | 2 | 178 |
| Field structure and switchesp4-census-docx-field-structure-switches | 450 | 216 | 254 |
| Fills, lines, effects, and 3Dp4-census-docx-fills-lines-effects-3d | 516 | 142 | 220 |
| Find and replacep4-census-docx-find-replace | 141 | 48 | 126 |
| Fixed-layout render formats and optionsp4-census-docx-fixed-render-formats-options | 608 | None | 314 |
| Floating picture anchors and text wrapp4-census-docx-anchor-wrap-geometry | 217 | 644 | 9 |
| Footnotes and endnotesp4-census-docx-footnotes-endnotes | 656 | 232 | 332 |
| Geometry, groups, and connectorsp4-census-docx-geometry-groups-connectors | 391 | 90 | 96 |
| HTML and MHTML exportp4-census-docx-html-mhtml-export | 82 | None | 142 |
| Import conversionsp4-census-docx-import-conversions | 170 | 2 | 192 |
| Legacy and adjacent formatsp4-census-docx-legacy-adjacent-formats | 46 | None | 107 |
| Mail merge and reportingp4-census-docx-mail-merge-reporting | 152 | 164 | 388 |
| Markup compatibilityp4-census-docx-markup-compat | 125 | 36 | 102 |
| Media, OLE, macros, and custom UIp4-census-docx-media-ole-macro-customui | 2,003 | 1,616 | 80 |
| Package parts and relationshipsp4-census-docx-opc-graph-parts | 183 | 34 | 44 |
| Package profilesp4-census-docx-package-profiles | 96 | 120 | 204 |
| Pagination, keep rules, and columnsp4-census-docx-pagination-keep-columns | 196 | 376 | 182 |
| Reference, index, and form fieldsp4-census-docx-field-types-reference-index-form | 350 | 296 | 542 |
| Render-time semanticsp4-census-docx-render-time-semantics | 104 | 70 | 301 |
| Right-to-left and complex scriptsp4-census-docx-rtl-complex-scripts | 58 | 304 | 240 |
| SDK object-model semanticsp4-census-docx-sdk-object-model-semantics | 187 | 3 | 57 |
| SDK stream and callback lifecyclep4-census-docx-sdk-stream-callback-lifecycle | 73 | 6 | 43 |
| SDK threading and cancellationp4-census-docx-sdk-threading-cancellation-policy | 46 | None | 26 |
| SmartArtp4-census-docx-smartart | 183 | 81 | 281 |
| Table cells, merges, and nestingp4-census-docx-table-cells-merge-nesting | 708 | 368 | 66 |
| Table properties and rowsp4-census-docx-table-props-rows | 472 | 576 | 116 |
| Theme colors and fontsp4-census-docx-theme-color-font | 108 | 134 | 79 |
| Tolerant repair limitsp4-census-docx-tolerant-repair-limits | 88 | None | 122 |
| Tracked revisionsp4-census-docx-tracked-revisions | 228 | 144 | 114 |
| w14 text effects compatibilityp4-census-docx-w14-text-effects-compat | 60 | 42 | 65 |
| w14, w15, and w16 controls and identifiersp4-census-docx-w14-w15-w16-controls-ids | 98 | 158 | 60 |
PPTX feature families (WolfPPT)
| Feature family | Supported | Preserved | Refused |
|---|---|---|---|
| Animation behaviours and mediap4-census-ppt-animation-behaviours-media | 61 | 30 | 16 |
| Animation effects and timingp4-census-ppt-animation-effects-timing | 272 | 82 | 32 |
| Chart axes and legendsp4-census-ppt-chart-axes-legend | 260 | 162 | 25 |
| Chart data labels and trendlinesp4-census-ppt-chart-labels-trendlines | 198 | 98 | 40 |
| Chart embedded workbooksp4-census-ppt-chart-embedded-workbook | 91 | 15 | 5 |
| Chart types and seriesp4-census-ppt-chart-types-series | 148 | 88 | 30 |
| Document properties, custom XML, and alt textp4-census-ppt-docprops-customxml-alt-text | 395 | 207 | 87 |
| Encryption and signaturesp4-census-ppt-encryption-signatures | 62 | 141 | 105 |
| Extension part passthroughp4-census-ppt-extension-parts-passthrough | 94 | 52 | 16 |
| Fields, tags, and view propertiesp4-census-ppt-fields-tags-view | 322 | 86 | 77 |
| Format profilesp4-census-ppt-format-profiles | 247 | 20 | 84 |
| Handouts, headers, and footersp4-census-ppt-handout-headers-footers | 170 | 90 | 54 |
| Legacy and adjacent formatsp4-census-ppt-legacy-adjacent-formats | 27 | None | 91 |
| Markup compatibilityp4-census-ppt-markup-compat | 149 | 10 | 68 |
| Master import and external linksp4-census-ppt-master-import-external-links | 155 | 45 | 24 |
| Master layouts and placeholdersp4-census-ppt-master-layout-placeholders | 669 | None | 26 |
| Master text stylesp4-census-ppt-master-text-styles | 807 | 136 | 132 |
| Media, OLE, macros, and custom UIp4-census-ppt-media-ole-macro-customui | 2,840 | 1,610 | 134 |
| Modern and legacy commentsp4-census-ppt-comments-modern-legacy | 115 | 50 | 12 |
| Notes slides and notes masterp4-census-ppt-notes-slides-master | 200 | 84 | 14 |
| Package parts and relationshipsp4-census-ppt-opc-graph-parts | 35 | 20 | 17 |
| PDF export, accessibility, and printp4-census-ppt-export-pdf-accessibility-print | 182 | 10 | 46 |
| Picture propertiesp4-census-ppt-picture-properties | 430 | 76 | 76 |
| Presentation lifecycle optionsp4-census-ppt-presentation-lifecycle-options | 111 | 146 | 29 |
| Raster, SVG, XPS, and HTML exportp4-census-ppt-export-raster-svg-xps-html | 212 | None | 51 |
| SDK object-model semanticsp4-census-ppt-sdk-object-model-semantics | 547 | 1 | 109 |
| SDK stream and callback lifecyclep4-census-ppt-sdk-stream-callback-lifecycle | 93 | None | 58 |
| SDK threading and cancellationp4-census-ppt-sdk-threading-cancellation-policy | 8 | 2 | 12 |
| Sections and custom showsp4-census-ppt-sections-custom-shows | 158 | 6 | 30 |
| Shape effects and 3Dp4-census-ppt-shape-effects-3d | 709 | 590 | 26 |
| Shape fill and line stylesp4-census-ppt-shape-fill-line-style | 1,946 | 518 | 224 |
| Shape geometry and connectorsp4-census-ppt-shape-geometry-connectors | 3,454 | 592 | 36 |
| Shape tree and transformsp4-census-ppt-shape-tree-transforms | 891 | 597 | 24 |
| Slide cloning and importp4-census-ppt-slide-clone-import | 157 | 68 | 70 |
| Slide transitionsp4-census-ppt-slide-transitions | 168 | 48 | 24 |
| SmartArtp4-census-ppt-smartart | 75 | 44 | 53 |
| Tablesp4-census-ppt-table-leaves | 264 | 16 | 65 |
| Text body autofit and vertical textp4-census-ppt-text-body-autofit-vertical | 500 | 220 | 61 |
| Text paragraphs and listsp4-census-ppt-text-paragraph-lists | 1,713 | 291 | 270 |
| Text run propertiesp4-census-ppt-text-run-properties | 1,158 | 226 | 72 |
| Theme color map and backgroundsp4-census-ppt-theme-colormap-background | 1,264 | 250 | 156 |
| Tolerant repair limitsp4-census-ppt-tolerant-repair-limits | 10 | None | 122 |
| Zoom and Morphp4-census-ppt-zoom-morph | 77 | 32 | 27 |
openpyxl compatibility
WolfXL maps 83 openpyxl idioms to their WolfXL equivalents: 76 are supported and 7 are out of scope. The full matrix, with notes on each row, lives in the migration documentation. It was last rendered on 2026-10-12.
Workbook + Worksheet (12)
| openpyxl | WolfXL | Status |
|---|---|---|
| Workbook() | wolfxl.Workbook() | Supported |
| load_workbook(path) | wolfxl.load_workbook(path) | Supported |
| load_workbook(path, data_only=True) | wolfxl.load_workbook(path, data_only=True) | Supported |
| Implicit (full DOM rewrite) | wolfxl.load_workbook(path, modify=True) | Supported |
| load_workbook(path, read_only=True) | wolfxl.load_workbook(path, read_only=True) | Supported |
| wb.save(path) | wb.save(path) | Supported |
| wb["Sheet"], wb.active, wb.sheetnames | wb["Sheet"], wb.active, wb.sheetnames | Supported |
| wb.create_sheet(title) | wb.create_sheet(title) | Supported |
| wb.create_sheet(title, index=...) on loaded workbook | wb.create_sheet(title, index=...) on modify=True workbook | Supported |
| wb.remove(ws) on loaded workbook | wb.remove(ws) on modify=True workbook | Supported |
| ws.title = 'Renamed' on loaded workbook | ws.title = 'Renamed' on modify=True workbook | Supported |
| wb.copy_worksheet(ws) | wb.copy_worksheet(ws) | Supported |
Cell + style API (6)
| openpyxl | WolfXL | Status |
|---|---|---|
| ws["A1"].value, ws.cell(r, c).value | ws["A1"].value, ws.cell(r, c).value | Supported |
| cell.font / fill / border / alignment / number_format | cell.font / fill / border / alignment / number_format | Supported |
| Border(diagonal=Side(...), diagonalUp=True) | Border(diagonal=Side(...), diagonalUp=True) | Supported |
| cell.protection = Protection(...) | cell.protection = Protection(...) | Supported |
| NamedStyle(name=...) + wb.add_named_style(...) | NamedStyle(name=...) + wb.add_named_style(...) | Supported |
| GradientFill(stop=(...)) | GradientFill(stop=(...)) | Supported |
Charts (9)
| openpyxl | WolfXL | Status |
|---|---|---|
| BarChart / LineChart / PieChart / DoughnutChart | BarChart / LineChart / PieChart / DoughnutChart | Supported |
| AreaChart / ScatterChart / BubbleChart / RadarChart | AreaChart / ScatterChart / BubbleChart / RadarChart | Supported |
| BarChart3D / LineChart3D / PieChart3D / AreaChart3D | BarChart3D / LineChart3D / PieChart3D / AreaChart3D | Supported |
| SurfaceChart / SurfaceChart3D / StockChart / ProjectedPieChart | SurfaceChart / SurfaceChart3D / StockChart / ProjectedPieChart | Supported |
| ws.add_chart / remove_chart / replace_chart | ws.add_chart / remove_chart / replace_chart | Supported |
| wb.create_chartsheet(...).add_chart(chart) | wb.create_chartsheet(...).add_chart(chart) | Supported |
| bar + line on shared category axis with secondary value axis | bar + line on shared category axis with secondary value axis | Supported |
| data label + axis label rich-text runs | data label + axis label rich-text runs | Supported |
| pivot chart with per-point overrides | pivot chart with per-point overrides | Supported |
Pivot tables (7)
| openpyxl | WolfXL | Status |
|---|---|---|
| PivotCache + PivotTable construction | wolfxl.pivot.PivotCache + PivotTable | Supported |
| chart.pivot_source = pt | chart.pivot_source = pt | Supported |
| edit existing pivot's source range, field order, etc. | edit existing pivot source + layout fields | Supported |
| edit existing pivot row/column fields | PivotTableHandle.row_fields / column_fields | Supported |
| edit existing pivot page field filter | PivotTableHandle.page_fields / set_filter | Supported |
| edit existing pivot data-field aggregation | PivotTableHandle.data_fields / set_aggregation | Supported |
| copy_worksheet of pivot-bearing sheet (drops in openpyxl) | copy_worksheet of pivot-bearing sheet (deep-clone) | Supported |
Images + drawings (2)
| openpyxl | WolfXL | Status |
|---|---|---|
| Image("logo.png") + ws.add_image(img, "B5") | Image("logo.png") + ws.add_image(img, "B5") | Supported |
| ws.replace_image / remove_image | ws.replace_image / remove_image | Supported |
Worksheet structural ops (3)
| openpyxl | WolfXL | Status |
|---|---|---|
| ws.insert_rows / delete_rows | ws.insert_rows / delete_rows | Supported |
| ws.insert_cols / delete_cols | ws.insert_cols / delete_cols | Supported |
| ws.move_range(range, rows, cols) | ws.move_range(range, rows, cols) | Supported |
Modify-mode mutations (4)
| openpyxl | WolfXL | Status |
|---|---|---|
| wb.properties.title = ... | wb.properties.title = ... | Supported |
| wb.defined_names[name] = DefinedName(...) | wb.defined_names[name] = DefinedName(...) | Supported |
| ws.add_table(Table(...)) | ws.add_table(Table(...)) | Supported |
| ws.data_validations.append(...) | ws.data_validations.append(...) | Supported |
Read-side parity (4)
| openpyxl | WolfXL | Status |
|---|---|---|
| load_workbook(path) | load_workbook(path) | Supported |
| not supported in openpyxl | native BIFF12; values, cached formulas, read-side styles | Supported |
| not supported in openpyxl | calamine; value-only, styles raise | Out of scope |
| not supported in openpyxl | not supported (out of scope) | Out of scope |
Utility functions (4)
| openpyxl | WolfXL | Status |
|---|---|---|
| openpyxl.utils.get_column_letter | wolfxl.utils.cell.get_column_letter | Supported |
| openpyxl.utils.column_index_from_string | wolfxl.utils.cell.column_index_from_string | Supported |
| openpyxl.utils.range_boundaries | wolfxl.utils.cell.range_boundaries | Supported |
| openpyxl.utils.coordinate_to_tuple | wolfxl.utils.cell.coordinate_to_tuple | Supported |
Streaming write (`write_only=True`) (1)
| openpyxl | WolfXL | Status |
|---|---|---|
| Workbook(write_only=True) | wolfxl.Workbook(write_only=True) | Supported |
Protection (2)
| openpyxl | WolfXL | Status |
|---|---|---|
| ws.protection = SheetProtection(...) | ws.protection = SheetProtection(...) | Supported |
| wb.security = WorkbookProtection(...) | wb.security = WorkbookProtection(...) | Supported |
External links (2)
| openpyxl | WolfXL | Status |
|---|---|---|
| wb._external_links + xl/externalLinks/* parts | wb._external_links + xl/externalLinks/* parts | Supported |
| append/remove/edit external workbook links | wb._external_links append/remove/update_target | Supported |
VBA macros (3)
| openpyxl | WolfXL | Status |
|---|---|---|
| .xlsm preserved on read+write | .xlsm preserved on modify-mode save | Supported |
| workbook.vba_archive (read-only inspection) | workbook.vba_archive (read-only inspection) | Supported |
| not supported in openpyxl | macro authoring from Python | Out of scope |
Legacy formats (`.xlsb` / `.xls` / `.ods`) (3)
| openpyxl | WolfXL | Status |
|---|---|---|
| not supported | write `.xlsb` | Out of scope |
| not supported | write `.xls` | Out of scope |
| not supported | read+write `.ods` | Out of scope |
Comments (2)
| openpyxl | WolfXL | Status |
|---|---|---|
| cell.comment = Comment(text, author) | cell.comment = Comment(text, author) | Supported |
| threaded comment write + modify (xl/threadedComments) | threaded comment write + modify (xl/threadedComments) | Supported |
Rich text (2)
| openpyxl | WolfXL | Status |
|---|---|---|
| cell.value = CellRichText(...) | cell.value = CellRichText(...) | Supported |
| ws.oddHeader / oddFooter rich-text runs | ws.oddHeader / oddFooter rich-text runs | Supported |
Conditional formatting (6)
| openpyxl | WolfXL | Status |
|---|---|---|
| cellIs / containsText / expression / colorScale (basic) | cellIs / containsText / expression / colorScale (basic) | Supported |
| IconSetRule (3 / 4 / 5 icons + percentile / number ladders) | IconSetRule (3 / 4 / 5 icons + percentile / number ladders) | Supported |
| DataBarRule (gradient + solid; min / max / percent / formula) | DataBarRule (gradient + solid; min / max / percent / formula) | Supported |
| DataBarRule with percent / num / formula cfvo + showValue=False | DataBarRule with percent / num / formula cfvo + showValue=False | Supported |
| ColorScaleRule with 3-stop, percentile / formula / number cfvo | ColorScaleRule with 3-stop, percentile / formula / number cfvo | Supported |
| stopIfTrue + explicit priority + dxf integration | stopIfTrue + explicit priority + dxf integration | Supported |
Defined names (2)
| openpyxl | WolfXL | Status |
|---|---|---|
| wb.defined_names + DefinedName(name=, value=) | wb.defined_names + DefinedName(name=, value=) | Supported |
| full ECMA-376 §18.2.5 attribute surface (13 attrs) | full ECMA-376 §18.2.5 attribute surface (13 attrs) | Supported |
Print settings + page setup (2)
| openpyxl | WolfXL | Status |
|---|---|---|
| ws.print_options / page_setup / page_margins / print_title_rows | ws.print_options / page_setup / page_margins / print_title_rows | Supported |
| full PageSetup / PrintOptions surface (~30 attrs) | full PageSetup / PrintOptions surface (~30 attrs) | Supported |
Array + data-table formulas (3)
| openpyxl | WolfXL | Status |
|---|---|---|
| ArrayFormula(ref, text) | ArrayFormula(ref, text) | Supported |
| DataTableFormula(...) | DataTableFormula(...) | Supported |
| Worksheet.array_formulae + DataTableFormula del flags | Worksheet.array_formulae + DataTableFormula del flags | Supported |
Calc chain (2)
| openpyxl | WolfXL | Status |
|---|---|---|
| calcChain rebuild on modify | calcChain rebuild on modify | Supported |
| cross-sheet calc-chain ordering, deleted-cell pruning | cross-sheet calc-chain ordering, deleted-cell pruning | Supported |
Slicers (2)
| openpyxl | WolfXL | Status |
|---|---|---|
| Slicer + SlicerCache wired to a PivotCache | Slicer + SlicerCache wired to a PivotCache | Supported |
| Slicer outside pivot context (table-driven, etc.) | Slicer outside pivot context (table-driven, etc.) | Out of scope |
Check your own files
Your documents decide which rows matter. Start an evaluation on a representative file, or request a guided evaluation to check a workflow before you buy. Pricing lists the available plans.