Skip to content

Bump NPOI from 2.7.3 to 2.8.0#8

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/nuget/NPOI-2.8.0
Closed

Bump NPOI from 2.7.3 to 2.8.0#8
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/nuget/NPOI-2.8.0

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github May 20, 2026

Updated NPOI from 2.7.3 to 2.8.0.

Release notes

Sourced from NPOI's releases.

2.8.0-rc3

Release Notes
Nuget Link

What's New in 2.8.0

[!IMPORTANT]
To ensure the long-term sustainability of this project, a monthly maintenance fee has been introduced. This fee is required to be paid by all organizations or users of any library from this project who generate revenue. You can pay the fee via GitHub Sponsors.

To enact this, an EULA on binary releases is added to the repo and nuget packages that requires payment of the maintenance fee.

For more information on who must pay the fee and other frequently asked questions, please see the Open Source Maintenance Fee organisation page.

What's Changed

2.7.6

Release Notes
Nuget Link

What's Changed

New Contributors

Full Changelog: nissl-lab/npoi@2.7.5-rc1...2.7.6-rc1

2.7.5

Nuget link
Release Notes

What's Changed

New Contributors

Full Changelog: nissl-lab/npoi@2.7.4-rc3...2.7.5-rc1

2.7.4

Nuget Link
Release Notes

What's Changed

New Contributors

Commits viewable in compare view.

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

---
updated-dependencies:
- dependency-name: NPOI
  dependency-version: 2.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot Bot commented on behalf of github May 20, 2026

Labels

The following labels could not be found: dependencies, nuget. Please create them before Dependabot can add them to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

@dependabot dependabot Bot requested a review from jkindrix as a code owner May 20, 2026 18:34
@jkindrix
Copy link
Copy Markdown
Owner

Closing this PR. NPOI 2.8.0 introduces the Open Source Maintenance Fee (OSMF) EULA on binary releases: organizations or users with ≥ US $10,000 annual revenue who depend on the library (directly or transitively via wrapper libraries like NetXlsx) are required to pay a monthly maintenance fee via GitHub Sponsors.

NetXlsx is MIT-licensed and promises consumers a clean Apache-2.0/MIT dependency chain. Accepting this bump would silently transfer the OSMF obligation to downstream consumers above the revenue threshold.

Decision recorded as I23 in docs/design.md: pin NPOI at 2.7.3 (last clean Apache-2.0 release). Quarterly re-evaluation via new Spike 5-Q in docs/scheduled-spikes.md. Long-term direction recorded in docs/long-term.md: implement OOXML directly and drop NPOI entirely.

Dependabot updated to ignore future NPOI major and minor bumps so this PR doesn't keep cycling. Patch updates within 2.7.x remain welcome.

@jkindrix jkindrix closed this May 20, 2026
@jkindrix jkindrix deleted the dependabot/nuget/NPOI-2.8.0 branch May 20, 2026 18:52
@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot Bot commented on behalf of github May 20, 2026

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

jkindrix added a commit that referenced this pull request Jun 1, 2026
Model xl/styles.xml on the SDK engine via a new OoxmlStylePool that dedups
CellStyle values to a single cellXfs index (decision #4) and emits OOXML
schema types (font/fill/border/numFmt/xf) directly. Wires the styling
surface end to end:

- ICell.Style (merge: non-null axes overlay, null inherit), NumberFormat,
  GetStyle, ApplyNamedStyle; IRange.Apply/ApplyNamedStyle (dense);
  IColumn.Width/WidthUnits/Hidden/SetDefaultStyle/ForEachPopulated;
  IRow.HeightInPoints/Hidden; IWorkbook style-pool diagnostics + in-memory
  named-style registry.
- Unblocks the deferred date/time setters: SetDate (DateTime/DateOnly) /
  SetTime / SetDuration write the Excel serial and apply the workbook's
  default date/time/duration number format when the cell is unstyled
  (I-18/I-19, §7.9). GetDate/GetDateOnly and Kind==Date detect date number
  formats (builtin ids 14-22/45-47 plus custom date-token codes). The
  1900/1904 epochs are honored, including Excel's 1900-02-29 leap bug.
- Applies WorkbookOptions.DefaultFontName/Size to font index 0 on
  CreateOoxml and DateSystem.Excel1904 to workbookPr/@date1904. OpenOoxml
  adopts the file's stylesheet and default font untouched (lessons #8/#9).

Stays within the parallel-engine rules: only Internal/Ooxml*.cs and the
isolated NetXlsx.OoxmlEngine.Tests are touched; the NPOI engine and the
existing suite are unchanged. OoxmlEngine.Tests: 30 -> 52, green on
net8.0 + net10.0.
jkindrix added a commit that referenced this pull request Jun 1, 2026
Implement ISheet.AddPicture (all five overloads) and ISheet.Pictures on the
SDK engine. Each sheet's images live in a DrawingsPart (xdr:wsDr) referenced by
a worksheet <drawing r:id> child, with the bytes in an ImagePart referenced by
the picture's blip fill. The <drawing> child routes through OoxmlSchemaOrder so
adding a picture to an opened sheet that already carries a later sibling (e.g.
<legacyDrawing>) stays schema-ordered (SDK-quirk #8).

Single-cell overloads anchor at the cell top-left at the image's natural pixel
size via an xdr:oneCellAnchor with an EMU <xdr:ext> (PNG IHDR / JPEG SOFn dims x
9525) -- no column-width-dependent resize. Range overloads use xdr:twoCellAnchor
preserving per-image EMU offsets, the end cell exclusive (lesson #5); FromCell/
ToCell round-trip 1-based addresses identically to the NPOI engine. Magic-byte
detection + validation mirror the NPOI engine exactly. IPicture.Underlying
throws NotSupportedException on the SDK engine (escape-hatch divergence).

Adds PictureTests (+ picture & open-mutate fixtures to the schema-validation
gate, clean under Microsoft365); cross-checked against the NPOI-engine
PictureApiTests / RowHeightAndPictureAnchorTests / ThemeReadAndDrawing
IterationTests. No public symbol added. Connectors/shapes + theme round-trip
remain deferred to the rest of the drawings slice.
jkindrix added a commit that referenced this pull request Jun 1, 2026
Implements IWorkbook.SetThemeXml / GetThemeXml and the read-side
resolution (ResolveThemeColor x3 + GetThemeLineWidthEmu) on the Open XML
SDK engine, completing the drawings slice. No public symbol added — all
six are existing interface members newly implemented internally.

- The theme is a dedicated ThemePart hung off the WorkbookPart by the
  theme relationship, not a child of any strict-ordered container, so the
  schema-order helper (SDK-quirk #8) does not apply. SetThemeXml creates
  the part via AddNewPart<ThemePart>() (wiring content type +
  relationship), reuses an existing part on a re-set, and writes raw bytes
  with FeedData. GetThemeXml reads the part stream directly, never
  materializing ThemePart.Theme into a DOM that would re-serialize and
  drift, so the theme round-trips faithfully (lesson #2: a missing theme
  breaks column widths + theme-color resolution).
- Resolution delegates to the engine-agnostic ThemeInfo (decision I-81),
  so the OOXML slot mapping, tx/bg aliases, Excel tint, and indexed line
  widths behave identically to the NPOI engine. The cached ThemeInfo is
  invalidated by SetThemeXml so a re-set theme is seen.
- New ThemeTests mirror the NPOI-engine ThemeReadAndDrawingIterationTests
  (theme half) verbatim, de-risking the cutover; a theme schema-valid
  fixture is added to the gate (clean under Microsoft365). The schema
  fixture carries the latin/ea/cs font triple CT_FontCollection requires.

OoxmlEngine.Tests 207 -> 225; green on net8.0 + net10.0.
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