feat(xlsx-pro): B1.3 — NeoReports.Xlsx.Pro multi-sheet workbook (commercial) - #67
Merged
Conversation
…ercial)
The first paid "Pro" feature: a multi-sheet XLSX workbook writer that packs several views as
worksheets in one .xlsx, built on the B1.2 sectioned-output hook.
- New package NeoReports.Xlsx.Pro (net8/net9): Format.XlsxWorkbook(...) returns a
SectionedOutputSpec for ToSections(...); XlsxWorkbookWriter : IReportSectionedWriter (ClosedXML,
one worksheet per section, per-sheet header/auto-filter, unique/sanitized sheet names).
- Reuses the MIT XLSX cell semantics: extracted XlsxWriter's cell logic into a public
XlsxCells.SetCell helper in NeoReports.Formats.Xlsx (no behavior change; the 4 golden tests still
pass) so the Pro writer produces identical native types/formats without duplication.
- Commercial boundary (D27): the Pro package is licensed PolyForm Small Business 1.0.0 (free under
USD 1M revenue) — LICENSE.txt carries the SPDX id + copyright + threshold + canonical URL, with a
clear TODO to paste the verbatim body (not transcribed from a summary). IsPackable=false so it is
excluded from the OSS NuGet release — verified `dotnet pack NeoReports.sln` produces no Pro nupkg.
Tests: golden-file test opens the produced workbook and asserts two worksheets ("Approved",
"Rejected") with their own filters/columns from a single source read. Full solution builds clean.
PLAN B1.3 done; B1.4 = paste the verbatim LICENSE + decide Pro distribution. Also logged the
maintainer's concurrency/memory-under-load testing task in the PLAN backlog.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



The first paid "Pro" feature: a multi-sheet XLSX workbook that packs several views as worksheets in one
.xlsx, built on the B1.2 sectioned-output hook.API
→ one workbook with an Approved and a Rejected worksheet (each its own filter/columns) from a single source read.
Package
NeoReports.Xlsx.ProFormat.XlsxWorkbook(...)→ aSectionedOutputSpecforToSections(...).XlsxWorkbookWriter : IReportSectionedWriter(ClosedXML): one worksheet per section, per-sheet header/auto-filter, sanitized+unique sheet names.XlsxWriter's cell logic into a publicXlsxCells.SetCellhelper inNeoReports.Formats.Xlsx(no behavior change — the 4 Xlsx golden tests still pass), so the Pro writer emits identical native types/formats without duplication.Commercial boundary (D27)
LICENSE.txtcarries the SPDX id + copyright + threshold + canonical URL, with a clear TODO to paste the verbatim body — I did not transcribe legally-binding text from a summary.IsPackable=false→ excluded from the OSS NuGet release. Verified:dotnet pack NeoReports.slnproduces all 8 OSS packages and no Pro nupkg.Tests
Golden-file test opens the produced workbook and asserts the two worksheets, their headers, and the correctly-filtered rows/columns. Full solution builds clean.
Next / needs you (B1.4)
LICENSE.txt(standard doc from the canonical URL).Also logged your concurrency/memory-under-load testing task in the PLAN backlog (+ a task chip).