🎯 Why Modern Applications Need a Spreadsheet → Multiple Spreadsheets Engine
| Business Pain | What Happens Without Sheetize |
|---|---|
| Monolithic Workbooks | Teams receive a single file with dozens of sheets; downstream systems can only consume one sheet at a time, forcing manual copy‑pasting. |
| Time‑Consuming Extraction | Analysts spend hours extracting individual sheets for separate reporting pipelines. |
| Inconsistent Layout & Formulas | When a sheet is copied manually, styles, named ranges, and hidden objects are lost, breaking downstream macros. |
| Scalability Bottlenecks | Ad‑hoc scripts cannot keep up with nightly jobs that must split thousands of source workbooks into per‑sheet files for downstream processing. |
Solution: Sheetize Spreadsheet Splitter for .NET – a single, royalty‑free library that preserves every cell style, formula, chart, and embedded object while splitting a workbook into individual files. The output file extension matches the chosen input format.
Supported Input (and Output) Formats
XlsxXlsbXlsmXltmXlamExcel97To2003Excel95SpreadsheetMLXlt
All conversions happen with zero‑pain code and run on any .NET runtime (Framework 4.x, .NET 6/7/8, Azure Functions, AWS Lambda, etc.).
🚀 Core Benefits at a Glance
| Feature | Benefit |
|---|---|
| One‑Click Multi‑Sheet Split | Supply a workbook → receive a folder of ready‑to‑use per‑sheet workbooks in seconds. |
| Preserve Formulas & Charts | No need to re‑create calculations – each split file keeps the original formulas unchanged. |
| Full Styling Fidelity | Cell colors, fonts, borders, conditional formatting, and merged cells survive the split exactly as they appear. |
| Cross‑Platform | Works on Windows, Linux, and macOS .NET runtimes. |
| Streaming API | Split using streams → no temporary files, low memory footprint, ideal for cloud‑scale processing. |
| Transparent Licensing | Perpetual runtime license, free updates, no per‑seat fees. |
| Performance‑Optimized | Bench‑marked to split > 300 sheets/sec on an 8‑core VM. |
📄 Splitting a Workbook – 5‑Line Sample
using Sheetize;
var license = new Sheetize.License();
license.SetLicense("Sheetize.SpreadsheetSplitter_for_.NET.lic");
var loadOptions = new LoadOptions
{
InputFile = @"C:\Data\MasterReport.xlsx"
};
var saveOptions = new SplitterSaveOptions
{
// Folder where each sheet will be written as its own workbook
OutputFolder = @"E:\SplitSheets\"
};
SpreadsheetSplitter.Process(loadOptions, saveOptions);
Result: Every worksheet in MasterReport.xlsx is written to E:\SplitSheets\ as an independent workbook (e.g., Sheet1.xlsx, Sheet2.xlsx, …) preserving all styles, formulas, and embedded objects.
🛡️ Robust Error Handling & Validation
using Sheetize;
using System;
using System.IO;
using System.Linq;
try
{
// 1️⃣ License activation
var license = new Sheetize.License();
license.SetLicense(@"C:\Licenses\Sheetize.SpreadsheetSplitter_for_.NET.lic");
// 2️⃣ Input workbook
string sourceFile = @"C:\Data\AnnualReport.xlsb";
// 3️⃣ Supported extensions (both input & output)
var supported = new[]
{
".xlsx",".xlsb",".xlsm",".xltm",".xlam",
".xls",".xml",".xlt"
};
// 4️⃣ Validate source
if (!File.Exists(sourceFile))
throw new FileNotFoundException($"Source not found: {sourceFile}");
if (!supported.Contains(Path.GetExtension(sourceFile).ToLower()))
throw new NotSupportedException($"Unsupported source type: {sourceFile}");
// 5️⃣ Prepare options
var load = new LoadOptions { InputFile = sourceFile };
var save = new SplitterSaveOptions
{
OutputFolder = @"C:\Data\SplitOutput\"
};
// 6️⃣ Execute split
SpreadsheetSplitter.Process(load, save);
Console.WriteLine($"✅ Split succeeded – files saved to {save.OutputFolder}");
}
catch (Exception ex)
{
// Centralised error logging (Serilog, NLog, Application Insights, etc.)
Console.Error.WriteLine($"❌ Split failed: {ex.GetType().Name} – {ex.Message}");
// Optionally re‑throw for upstream handling
// throw;
}
🎬 Real‑World Scenarios Powered by Sheetize Spreadsheet Splitter
| # | Scenario | Input Type | Output (per‑sheet) | Business Outcome |
|---|---|---|---|---|
| 1️⃣ | Department‑Level Reporting | Xlsx master workbook containing all divisions | Individual Xlsx files (one per division) | Each department receives its own file automatically – no manual extraction. |
| 2️⃣ | Legacy Archive Migration | Excel95 workbook with 50 legacy sheets | Xlt (template) files per sheet | Preserve original layout while making each sheet independently version‑controlled. |
| 3️⃣ | Data‑Lake Staging | SpreadsheetML (XML) workbook generated by a legacy system | Xlsm files (one per sheet) | Downstream Spark jobs can ingest each sheet as a separate source, simplifying schema management. |
| 4️⃣ | Automated Invoice Generation | Xltm template workbook where each sheet represents a client | Xlsx invoices per client | Batch‑process thousands of client invoices without looping over sheets manually. |
| 5️⃣ | Micro‑service Data Exchange | Xlsb large workbook from an analytics service | Xlsb files (one per analytical result) | Each micro‑service consumes only the sheet it cares about, reducing bandwidth and parsing overhead. |
📈 Performance & Scaling Tips
| Tip | How It Helps |
|---|---|
Reuse the License object | Avoids repeated I/O → ~10 % speed boost for large batch jobs. |
Stream instead of file paths (LoadOptions.InputStream / SplitterSaveOptions.OutputStream) | Cuts disk usage, enables processing of GB‑size workbooks on low‑memory containers. |
Parallel splits (Parallel.ForEach on a collection of source workbooks) | Utilises multi‑core VMs to split many files concurrently. |
Disable unneeded features (IncludeHiddenSheets = false when not needed) | Reduces output size and conversion time. |
Pre‑filter sheets (LoadOptions.SheetNames = new[] { "Sales", "Summary" }) | Splits only needed worksheets, saving CPU cycles. |
📦 Getting Started in Minutes
# 1️⃣ Install the NuGet package
dotnet add package Sheetize
# 2️⃣ Grab a free trial licence (no credit‑card required)
# https://purchase.sheetize.com/temp-license/113911
# 3️⃣ Place the .lic file in your project, e.g. ./Licenses/Sheetize.SpreadsheetSplitter_for_.NET.lic
# 4️⃣ Use the sample code above – compile, run, and watch individual sheet files appear!
Frequently Asked Questions
| Question | Answer |
|---|---|
| Does the library support .NET 8? | Yes – fully tested on .NET 8, .NET 6, and .NET Framework 4.x. |
| Can I split directly to the same extension as the input? | By default SplitterSaveOptions.OutputExtension inherits the source extension; you can override it if needed. |
| What about workbooks larger than 1 GB? | Use the streaming API; the library processes data in chunks and keeps memory under 300 MB. |
| Are formulas recalculated after the split? | Formulas are preserved exactly; you can trigger a full workbook recalculation via Workbook.Calculate() if required. |
| Is there enterprise support? | Paid licenses include 24/7 email/Slack support, SLA‑backed bug fixes, and optional on‑prem assistance. |
📣 Call‑to‑Action
- Download the NuGet package –
dotnet add package Sheetize. - Run the “Hello‑Splitter” console app using the code snippets above.
- Contact our sales team for an enterprise agreement (unlimited splits, dedicated support, on‑prem licensing).
➡️ Grab your trial now: https://purchase.sheetize.com/temp-license/113911
Turn a monolithic workbook into a tidy set of ready‑to‑use spreadsheets – automatically and at scale.