Epplus //top\\ -

He’d written this C# console app three years ago. Back then, it was a scrappy script using EPPlus 4.5, just to save his team two hours of manual copying and pasting. Now, the system had metastasized. It pulled from three APIs, two SQL databases, and a CSV vomited out by a legacy mainframe in the basement.

Null. He’d written defensive code against nulls. But the null wasn't the problem. It was the memory of the null.

He opened Task Manager. 1.8 GB of RAM. Garbage collection was running every few seconds, like a frantic housekeeper at a frat party. epplus

Arjun needed a different pattern.

“You’re not writing Excel,” he muttered. “You’re resurrecting a corpse every time.” He’d written this C# console app three years ago

He added a comment to the new codebase, right above the using statement:

EPPlus, he remembered from the documentation, wasn’t just a writer. It maintained a full object model of the spreadsheet in RAM: styles, formulas, comments, hidden rows. Every cell you touched became a ExcelRangeBase object, a tiny ghost in memory. After three years of patches and feature creep, his app was loading the entire source template—all forty-two sheets, all conditional formatting, all pivot caches—just to write a single new column of data. It pulled from three APIs, two SQL databases,

He dove into the EPPlus source code on GitHub. There it was: ExcelPackage.Load(stream) deserialized every XML part inside the .xlsx zip archive. Every shared string. Every drawing. Every fragile reference. The library was brilliant, faithful to the Open XML spec—but it treated every load like a cathedral restoration.