Skip to content

feat(xlsx-pro): B1.3 — NeoReports.Xlsx.Pro multi-sheet workbook (commercial) - #67

Merged
thiagoluga merged 2 commits into
masterfrom
feat/b1-3-xlsx-pro
Jul 1, 2026
Merged

feat(xlsx-pro): B1.3 — NeoReports.Xlsx.Pro multi-sheet workbook (commercial)#67
thiagoluga merged 2 commits into
masterfrom
feat/b1-3-xlsx-pro

Conversation

@thiagoluga

Copy link
Copy Markdown
Owner

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

using static NeoReports.Xlsx.Pro.Format;

builder
    .From(source)
    .Column(v => v.Id, "Id")
    .ToSections(XlsxWorkbook(o => o.AutoFilter()), s => s
        .Section("Approved", v => v.Where(x => x.Amount > 0))
        .Section("Rejected", v => v
            .Where(x => x.Amount <= 0)
            .Column(x => x.Id, "Id").Column(x => x.Customer, "Customer")));

→ one workbook with an Approved and a Rejected worksheet (each its own filter/columns) from a single source read.

Package NeoReports.Xlsx.Pro

  • Format.XlsxWorkbook(...) → a SectionedOutputSpec for ToSections(...).
  • XlsxWorkbookWriter : IReportSectionedWriter (ClosedXML): one worksheet per section, per-sheet header/auto-filter, sanitized+unique sheet names.
  • Reuses the MIT cell semantics: extracted XlsxWriter's cell logic into a public XlsxCells.SetCell helper in NeoReports.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)

  • 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 — I did not transcribe legally-binding text from a summary.
  • IsPackable=false → excluded from the OSS NuGet release. Verified: dotnet pack NeoReports.sln produces 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)

  • Paste the verbatim PolyForm Small Business text into LICENSE.txt (standard doc from the canonical URL).
  • Decide the Pro distribution (private NuGet feed? manual pack?) and whether CI packs it separately.

Also logged your concurrency/memory-under-load testing task in the PLAN backlog (+ a task chip).

…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.
Comment thread tests/NeoReports.Xlsx.Pro.UnitTests/XlsxWorkbookTests.cs Fixed
Comment thread tests/NeoReports.Xlsx.Pro.UnitTests/XlsxWorkbookTests.cs Fixed
Comment thread tests/NeoReports.Xlsx.Pro.UnitTests/XlsxWorkbookTests.cs Fixed
@sonarqubecloud

sonarqubecloud Bot commented Jul 1, 2026

Copy link
Copy Markdown

@thiagoluga
thiagoluga merged commit 71e42d3 into master Jul 1, 2026
5 checks passed
@thiagoluga
thiagoluga deleted the feat/b1-3-xlsx-pro branch July 1, 2026 12:19
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.

2 participants