Skip to content

fix(xlsx): read valueless <c ...></c> cells as empty; promote v7.4.0 public API; dependency bumps - #176

Merged
GabrielMarquezMatte merged 11 commits into
masterfrom
develop
Nov 5, 2026
Merged

GabrielMarquezMatte merged 11 commits into
masterfrom
develop

Conversation

@GabrielMarquezMatte

Copy link
Copy Markdown
Owner

Summary

Everything on develop since v7.4.0: one reader fix, the post-release PublicAPI promotion, and four Dependabot bumps.

XLSX: open-and-closed empty cells (XlsxWorkbook.Enumerator.cs)

openpyxl writes a styled cell with no value as <c r="A1" s="1" t="n"></c>, not as <c r="A1" s="1"/>. The self-closing form already read as Empty. The open-and-closed form went into EmitScalarValue with an empty span, which gave a Number/Date/Boolean/Error cell with empty text and no number.

 if (kind != Kind.Inline)
-  EmitScalarValue(kind, ElementText(inner, VOpen, VClose), col, style)
+  value = ElementText(inner, VOpen, VClose)
+  if value is empty and kind is Number | Bool | Error | IsoDate
+    return                      // same as <c .../>: no cell emitted, reads as Empty
+  EmitScalarValue(kind, value, col, style)

Formula and string kinds are unchanged. An empty string is still a real value for them.

Other commits

  • chore: promote public API for v7.4.0: moves the 7.4.0 entries from PublicAPI.Unshipped.txt to PublicAPI.Shipped.txt (144 + 301 lines). Analyzer metadata only, no API change.
  • Dependabot:
    • rust_xlsxwriter 0.101.0 → 0.102.0 (rust/excelreader)
    • Meziantou.Analyzer 3.0.317 → 3.0.320 (Directory.Build.props)
    • Microsoft.Testing.Extensions.TrxReport 2.5.1 → 2.5.2 (NetFramework tests)
    • OfficeIMO.Excel 3.5.2 → 3.5.3 (benchmarks)

Evidence

New PythonProducerFixtures case in XlsxProducerDialectShapeTests:

<c r="A1" s="1" t="n"></c>      <!-- s=1 → numFmtId 14 (date style) -->
<c r="B1" t="n"><v>2</v></c>
<c r="C1" s="1" t="b"></c>
<c r="D1" t="s"><v>0</v></c>
  • Before: A1 → Date with empty text, C1 → Boolean with empty text
    After: A1 → Empty, B1 → Number "2", C1 → Empty, D1 → ExcelString "openpyxl"

Merge Danger

Door: two-way

A revert is enough to undo it. Nothing is persisted or migrated.

Blast Radius: XLSX reader

A consumer that read these cells and checked for Number/Date/Boolean with empty text now gets Empty, which is what <c .../> already returned. No other format and no writer is touched. The analyzer bump could add new build warnings but cannot change runtime behaviour.

GabrielMarquezMatte and others added 11 commits November 4, 2026 18:25
Bumps [rust_xlsxwriter](https://github.com/jmcnamara/rust_xlsxwriter) from 0.101.0 to 0.102.0.
- [Changelog](https://github.com/jmcnamara/rust_xlsxwriter/blob/main/CHANGELOG.md)
- [Commits](jmcnamara/rust_xlsxwriter@v0.101.0...v0.102.0)

---
updated-dependencies:
- dependency-name: rust_xlsxwriter
  dependency-version: 0.102.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps Meziantou.Analyzer from 3.0.317 to 3.0.320

---
updated-dependencies:
- dependency-name: Meziantou.Analyzer
  dependency-version: 3.0.320
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: analyzers
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps Microsoft.Testing.Extensions.TrxReport from 2.5.1 to 2.5.2

---
updated-dependencies:
- dependency-name: Microsoft.Testing.Extensions.TrxReport
  dependency-version: 2.5.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: test
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps OfficeIMO.Excel from 3.5.2 to 3.5.3

---
updated-dependencies:
- dependency-name: OfficeIMO.Excel
  dependency-version: 3.5.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: benchmarks
...

Signed-off-by: dependabot[bot] <support@github.com>
…-api-v7.4.0

chore: promote public API for v7.4.0
…ts/ExcelReader.Benchmarks/develop/benchmarks-d8f816df1a

Bump the benchmarks group with 1 update
…elop/analyzers-7445cc1560

Bump the analyzers group with 1 update
…ts/ExcelReader.NetFramework.Tests/develop/test-94d1d3d3af

Bump the test group with 1 update
…t/develop/rust_xlsxwriter-0.102.0

build(deps): bump rust_xlsxwriter from 0.101.0 to 0.102.0 in /rust
@codecov

codecov Bot commented Nov 5, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 75.00000% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 92.39%. Comparing base (8a45c71) to head (4c8b01d).
⚠️ Report is 1 commits behind head on master.

Files with missing lines Patch % Lines
...Reader.Core/Reader/Xlsx/XlsxWorkbook.Enumerator.cs 75.00% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #176      +/-   ##
==========================================
- Coverage   92.39%   92.39%   -0.01%     
==========================================
  Files         294      294              
  Lines       24935    24938       +3     
  Branches     4041     4042       +1     
==========================================
+ Hits        23039    23041       +2     
  Misses       1292     1292              
- Partials      604      605       +1     
Flag Coverage Δ
cpp 88.92% <ø> (ø)
csharp 92.21% <75.00%> (-0.01%) ⬇️
python 96.25% <ø> (ø)
rust 93.08% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@GabrielMarquezMatte
GabrielMarquezMatte merged commit bb20756 into master Nov 5, 2026
46 of 47 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant