Bump NPOI from 2.7.3 to 2.8.0#8
Conversation
--- 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>
LabelsThe following labels could not be found: Please fix the above issues or remove invalid values from |
|
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 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. |
|
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 If you change your mind, just re-open this PR and I'll resolve any conflicts on it. |
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.
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.
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.
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
What's Changed
... (truncated)
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
... (truncated)
Commits viewable in compare view.
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 rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill 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 versionwill 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 dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)