Hi Radzen team,
First of all, thanks for RadzenSpreadsheet and especially for the server-side Radzen.Documents.Spreadsheet API. Being able to create and read .xlsx files without a third-party library or an Office installation is exactly what we need.
Our scenario
We'd like to use the Workbook API in backend code: report generation in background jobs and processing uploaded workbooks in application/service layers. These projects have no UI and intentionally don't reference ASP.NET Core Components.
The issue
As far as I can see, the document API lives in Radzen.Blazor.dll, so we have to reference the Radzen.Blazor package. That also pulls in Microsoft.AspNetCore.Components and Microsoft.AspNetCore.Components.Web, along with all UI components, into our backend assemblies. It works, but it breaks our layering (no UI dependencies below the presentation layer) and adds dependencies that the code using it doesn't need.
// Application layer: no UI here, but requires the Radzen.Blazor package
using Radzen.Documents.Spreadsheet;
var workbook = new Workbook();
var sheet = workbook.AddSheet("Report", 100, 10);
// ... fill cells, save to stream as .xlsx
Suggestion
Move Radzen.Documents.* into its own package (e.g. Radzen.Documents) without ASP.NET Core dependencies, and have Radzen.Blazor reference it. Existing users would keep getting everything through Radzen.Blazor, and server-only consumers could reference just the document API. One way to keep this non-breaking might be type forwarding ([TypeForwardedTo]) from Radzen.Blazor to the new assembly, but you know the internals far better than we do.
I think this would help anyone using the API in background services, Web APIs, Azure Functions or console tools, which is the use case your blog post highlights.
It would be great to hear whether this direction fits your plans.
Thanks!