🎯 Why Modern Applications Need a Spreadsheet → Multiple Spreadsheets Engine

Business PainWhat Happens Without Sheetize
Monolithic WorkbooksTeams receive a single file with dozens of sheets; downstream systems can only consume one sheet at a time, forcing manual copy‑pasting.
Time‑Consuming ExtractionAnalysts spend hours extracting individual sheets for separate reporting pipelines.
Inconsistent Layout & FormulasWhen a sheet is copied manually, styles, named ranges, and hidden objects are lost, breaking downstream macros.
Scalability BottlenecksAd‑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

  • Xlsx
  • Xlsb
  • Xlsm
  • Xltm
  • Xlam
  • Excel97To2003
  • Excel95
  • SpreadsheetML
  • Xlt

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

FeatureBenefit
One‑Click Multi‑Sheet SplitSupply a workbook → receive a folder of ready‑to‑use per‑sheet workbooks in seconds.
Preserve Formulas & ChartsNo need to re‑create calculations – each split file keeps the original formulas unchanged.
Full Styling FidelityCell colors, fonts, borders, conditional formatting, and merged cells survive the split exactly as they appear.
Cross‑PlatformWorks on Windows, Linux, and macOS .NET runtimes.
Streaming APISplit using streams → no temporary files, low memory footprint, ideal for cloud‑scale processing.
Transparent LicensingPerpetual runtime license, free updates, no per‑seat fees.
Performance‑OptimizedBench‑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

#ScenarioInput TypeOutput (per‑sheet)Business Outcome
1️⃣Department‑Level ReportingXlsx master workbook containing all divisionsIndividual Xlsx files (one per division)Each department receives its own file automatically – no manual extraction.
2️⃣Legacy Archive MigrationExcel95 workbook with 50 legacy sheetsXlt (template) files per sheetPreserve original layout while making each sheet independently version‑controlled.
3️⃣Data‑Lake StagingSpreadsheetML (XML) workbook generated by a legacy systemXlsm files (one per sheet)Downstream Spark jobs can ingest each sheet as a separate source, simplifying schema management.
4️⃣Automated Invoice GenerationXltm template workbook where each sheet represents a clientXlsx invoices per clientBatch‑process thousands of client invoices without looping over sheets manually.
5️⃣Micro‑service Data ExchangeXlsb large workbook from an analytics serviceXlsb files (one per analytical result)Each micro‑service consumes only the sheet it cares about, reducing bandwidth and parsing overhead.

📈 Performance & Scaling Tips

TipHow It Helps
Reuse the License objectAvoids 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

QuestionAnswer
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

  1. Download the NuGet packagedotnet add package Sheetize.
  2. Run the “Hello‑Splitter” console app using the code snippets above.
  3. 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.

More in this category