Logo

How do I create an Excel (.XLS and .XLSX) file in C# without installing Microsoft Office?

Creating Excel files in C# without installing Microsoft Office is a common requirement, especially for server-side applications or environments where Office isn’t available. Below are some popular libraries and methods that let you generate both .xls (the legacy Excel format) and .xlsx (the newer, XML-based format) without relying on Microsoft Office.

1. EPPlus (for .xlsx)

Overview:

  • EPPlus focuses on the .xlsx format and uses the Open XML standard.
  • It’s one of the easiest libraries for creating and manipulating Excel files in C#.
  • License considerations may apply for commercial use, so review the license terms.

Sample Usage:

using OfficeOpenXml; // Install EPPlus via NuGet public void CreateExcelWithEPPlus() { ExcelPackage.LicenseContext = LicenseContext.NonCommercial; // Set license context using (var package = new ExcelPackage()) { var worksheet = package.Workbook.Worksheets.Add("Sheet1"); worksheet.Cells["A1"].Value = "Hello EPPlus!"; package.SaveAs(new FileInfo("Example.xlsx")); } }

2. NPOI (for .xls and .xlsx)

Overview:

  • NPOI is a .NET port of the Java POI library.
  • It supports both the older .xls (BIFF) format and the newer .xlsx format.
  • Great option if you need to handle legacy spreadsheets in addition to newer ones.

Sample Usage (creating .xls):

using NPOI.HSSF.UserModel; // For .xls using NPOI.SS.UserModel; using System.IO; public void CreateExcelWithNPOI() { IWorkbook workbook = new HSSFWorkbook(); // For .xls ISheet sheet = workbook.CreateSheet("Sheet1"); IRow row = sheet.CreateRow(0); ICell cell = row.CreateCell(0); cell.SetCellValue("Hello NPOI (.xls)!"); using (var fileData = new FileStream("Example.xls", FileMode.Create)) { workbook.Write(fileData); } }

For .xlsx, replace HSSFWorkbook with XSSFWorkbook from the NPOI.XSSF.UserModel namespace and Example.xls with Example.xlsx.

3. ClosedXML (for .xlsx)

Overview:

  • ClosedXML is a wrapper on top of the Open XML SDK, simplifying the code you need.
  • It only supports .xlsx (Open XML) files, but offers an easy-to-use, fluent interface.

Sample Usage:

using ClosedXML.Excel; // Install ClosedXML via NuGet public void CreateExcelWithClosedXML() { using (var workbook = new XLWorkbook()) { var worksheet = workbook.AddWorksheet("Sheet1"); worksheet.Cell("A1").Value = "Hello ClosedXML!"; workbook.SaveAs("Example.xlsx"); } }

4. Open XML SDK (for .xlsx)

Overview:

  • The Open XML SDK is the official library from Microsoft for working with .xlsx and other Office Open XML formats.
  • It’s lower-level compared to libraries like EPPlus or ClosedXML, so expect more verbose code.
  • Excellent for advanced scenarios where you need granular control over the document structure.

Sample Usage:

using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Spreadsheet; public void CreateExcelWithOpenXml() { using (SpreadsheetDocument document = SpreadsheetDocument.Create( "Example.xlsx", SpreadsheetDocumentType.Workbook)) { WorkbookPart workbookPart = document.AddWorkbookPart(); workbookPart.Workbook = new Workbook(); WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>(); worksheetPart.Worksheet = new Worksheet(new SheetData()); Sheets sheets = document.WorkbookPart.Workbook.AppendChild(new Sheets()); Sheet sheet = new Sheet() { Id = document.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Sheet1" }; sheets.Append(sheet); workbookPart.Workbook.Save(); } }

Selecting the Right Library

  1. EPPlus: Ideal for straightforward .xlsx creation, with a simpler API than raw Open XML.
  2. NPOI: Great choice if you need both .xls and .xlsx support, or if you’re used to Apache POI in Java.
  3. ClosedXML: Offers a high-level API and focuses on .xlsx, perfect for quick, readable code.
  4. Open XML SDK: For lower-level control and maximum transparency into the structure of the .xlsx file.

Best Practices and Tips

  • Error Handling: Always use try-catch for file I/O operations to handle permission or disk-related errors.
  • License Considerations: EPPlus (post version 5) uses a dual license; check if your usage scenario requires a commercial license. NPOI and ClosedXML each have their own licensing terms.
  • Performance: For very large datasets, consider streaming or segmenting your data to avoid excessive memory usage. Some libraries offer ways to write rows in chunks.
  • Security: If you allow users to upload Excel templates, ensure you sanitize or validate them to avoid malicious macro code.

Sharpen Your C# Skills Further

Mastering libraries to generate Excel files is a practical skill. To dive deeper into coding patterns and best practices in C#, consider taking these hands-on courses from DesignGurus.io:

They’ll help you strengthen your problem-solving skills across a wide range of real-world scenarios. For more videos on coding interview tips, system design discussions, and advanced coding insights, check out DesignGurus.io’s YouTube channel.

This way, you can focus on building robust, efficient, and maintainable .NET applications—Excel file generation included—without ever needing Microsoft Office on your server or development environment.

CONTRIBUTOR
TechGrind