OpenExcelLite: Minimal, dependency-free Excel generator. Features include streaming (100k–1M+ rows), hyperlink support, tables, AutoFilter, autofit columns, correct date formatting, empty row handling, and fully schema-valid OpenXML output. No ClosedXML. No EPPlus. No interop. Production-grade performance.
$ dotnet add package OpenExcelLiteOpenExcelLite is a lightweight, schema-safe Excel (XLSX) generator for .NET using the official OpenXML SDK.
Supports in-memory, streaming, multi-sheet, hyperlinks, and empty row generation — with zero dependencies.
var bytes = StreamingWorkbookBuilder.Build(wb =>
{
wb.AddSheet("Users", s => {
s.WriteRow("Id", "Name");
s.WriteRow(1, "Alex");
});
wb.AddSheet("Logs", s => {
s.WriteRow("Timestamp", "Message");
s.WriteRow(DateTime.Now, "Started");
});
});
---
# 🚀 New in v1.2.0 — Hyperlink Support
OpenExcelLite now supports clickable **Excel hyperlinks** with:
- Custom display text
- Full ECMA-376 compliant `<hyperlinks>` + relationship parts
- Works in both in-memory and streaming modes
- No Excel repair warnings
- Fully schema-valid output
### ✔ Create a hyperlink
```csharp
s.AddRow("Name", "Website");
s.AddRow("Google", XL.Hyper("https://google.com", "Visit Google"));
var bytes = StreamingWorkbookBuilder.Build("Links", w =>
{
w.WriteRow("Name", "Website");
w.WriteRow("GitHub", XL.Hyper("https://github.com/livedcode/OpenExcelLite"));
});
s.AddEmptyRows(3);
s.AddRow("Id", "Name");
s.AddRow(1, "Alex");
writer.WriteEmptyRows(5);
writer.WriteRow("Id", "Name");
var bytes = new WorkbookBuilder()
.AddSheet("Demo", s =>
{
s.AddEmptyRows(2);
s.AddRow("Id", "Name", "Active");
s.AddRow(1, "Alex", true);
s.AddRow(2, "Brian", false);
s.AddTable("Employees");
s.AutoFitColumns();
})
.Build();
File.WriteAllBytes("demo.xlsx", bytes);
var bytes = new WorkbookBuilder()
.AddSheet("Links", s =>
{
s.AddRow("Name", "Website");
s.AddRow("Google", XL.Hyper("https://google.com", "Visit Google"));
s.AddRow("GitHub", XL.Hyper("https://github.com/livedcode/OpenExcelLite"));
})
.Build();
File.WriteAllBytes("hyperlinks.xlsx", bytes);
var bytes = StreamingWorkbookBuilder.Build("Demo", writer =>
{
writer.WriteEmptyRows(4);
writer.WriteRow("Id", "Name");
writer.WriteRow(1, "Alex");
});
var bytes = StreamingWorkbookBuilder.Build("Links", writer =>
{
writer.WriteRow("Name", "Website");
writer.WriteRow("Google", XL.Hyper("https://google.com", "Visit"));
writer.WriteRow("GitHub", XL.Hyper("https://github.com/livedcode/OpenExcelLite"));
});
File.WriteAllBytes("streaming_links.xlsx", bytes);
.rels)MIT License (included in package)