Epplus

using (var package = new ExcelPackage()) var sheet = package.Workbook.Worksheets.Add("MySheet"); sheet.Cells["A1"].Value = "Hello EPPlus!"; package.SaveAs(new FileInfo(@"C:\Reports\Example.xlsx")); Use code with caution.

Processing: 63,000 rows. 24 columns. Formulas that referenced only the current row. No inter-sheet dependencies. Time to generate: 1.2 seconds. Peak memory: 142 MB. epplus

: Handle cell ranges, complex styling, and font formatting. using (var package = new ExcelPackage()) var sheet = package

For years, EPPlus was the go-to library for .NET developers needing to read and write .xlsx files. It struck the perfect balance: it was lightweight, faster than the competition, and had an API that actually made sense. Formulas that referenced only the current row

| Feature | EPPlus | Open XML SDK | NPOI | Excel Interop | | :--- | :--- | :--- | :--- | :--- | | | Excellent | Poor (Verbose) | Good | Terrible | | Performance | High | High | Medium | Low | | Excel Requirement | None | None | None | Required | | Cost | Paid (Commercial) | Free (MIT) | Free (Apache) | Free (Office Req.) | | Features | Extensive | Extensive (DIY) | Extensive | Total |

// Save the file var fileBytes = package.GetAsByteArray(); File.WriteAllBytes("example.xlsx", fileBytes);