EPPlus.Core.CoreCompat
2.0.1
dotnet add package EPPlus.Core.CoreCompat --version 2.0.1
NuGet\Install-Package EPPlus.Core.CoreCompat -Version 2.0.1
<PackageReference Include="EPPlus.Core.CoreCompat" Version="2.0.1" />
<PackageVersion Include="EPPlus.Core.CoreCompat" Version="2.0.1" />
<PackageReference Include="EPPlus.Core.CoreCompat" />
paket add EPPlus.Core.CoreCompat --version 2.0.1
#r "nuget: EPPlus.Core.CoreCompat, 2.0.1"
#:package EPPlus.Core.CoreCompat@2.0.1
#addin nuget:?package=EPPlus.Core.CoreCompat&version=2.0.1
#tool nuget:?package=EPPlus.Core.CoreCompat&version=2.0.1
╔══════════════════════════════════════════════════════════════════╗
║ ║
║ ███████╗██████╗ ██████╗ ██╗ ██╗ ██╗███████╗ ║
║ ██╔════╝██╔══██╗██╔══██╗██║ ██║ ██║██╔════╝ ║
║ █████╗ ██████╔╝██████╔╝██║ ██║ ██║███████╗ ║
║ ██╔══╝ ██╔═══╝ ██╔═══╝ ██║ ██║ ██║╚════██║ ║
║ ███████╗██║ ██║ ███████╗╚██████╔╝███████║ ║
║ ╚══════╝╚═╝ ╚═╝ ╚══════╝ ╚═════╝ ╚══════╝ ║
║ ║
║ C O R E · C O R E C O M P A T ║
║ Excel for modern .NET — without the pain ║
║ ║
╚══════════════════════════════════════════════════════════════════╝
Why You Need This
The original EPPlus library is locked to .NET Framework. Later forks added .NET Core support via the CoreCompat.System.Drawing shim — but that package is abandoned and broken on modern runtimes.
EPPlus.Core.CoreCompat is the community-maintained drop-in that works today:
Legacy world This package
──────────── ────────────
EPPlus (full .NET only) ✔ .NET Standard 2.0
EPPlus.Core (CoreCompat shim) → Works on Windows, Linux, macOS
VahidN/EPPlus.Core (abandoned) No Windows-only lock-in
.NET Standard 2.0 — cross-platform by design. Runs on .NET Core, .NET Framework, Mono, Unity, Xamarin.
What You Can Do
EPPlus.Core.CoreCompat
│
├── Workbooks & Worksheets
│ ├── Create / open / save .xlsx files
│ ├── Multiple sheets, named ranges, freeze panes
│ └── Worksheet protection & workbook encryption
│
├── Cells & Ranges
│ ├── Read / write values, formulas, hyperlinks
│ ├── Merge cells, auto-fit columns & rows
│ └── Copy / move ranges between sheets
│
├── Styles & Formatting
│ ├── Fonts (name, size, bold, italic, color, underline)
│ ├── Fills (solid, gradient, pattern)
│ ├── Borders (style, color, all sides)
│ ├── Number formats (dates, currency, custom)
│ └── Conditional formatting rules
│
├── Charts (embedded in the worksheet)
│ ├── Line, Bar, Column, Area
│ ├── Pie, Doughnut, Scatter, Bubble
│ └── Combination charts & chart series
│
├── Tables & Pivot Tables
│ ├── Excel ListObject tables with auto-filter
│ └── PivotTable with grouping & calculated fields
│
├── Formulas
│ ├── 300+ built-in Excel functions evaluated server-side
│ └── Array formulas & cross-sheet references
│
└── Data Import / Export
├── Load from IEnumerable<T> / DataTable
└── Export to CSV, print-ready layout
Install
dotnet add package EPPlus.Core.CoreCompat
or in the Package Manager Console:
Install-Package EPPlus.Core.CoreCompat
Quick Examples
Create a workbook
using OfficeOpenXml;
using System.IO;
// No license key needed for this community fork
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
using var package = new ExcelPackage();
var sheet = package.Workbook.Worksheets.Add("Sales");
// Headers
sheet.Cells[1, 1].Value = "Product";
sheet.Cells[1, 2].Value = "Q1";
sheet.Cells[1, 3].Value = "Q2";
sheet.Cells[1, 4].Value = "Total";
// Data rows
string[][] rows = [["Widget A", "1200", "1500"], ["Widget B", "800", "950"]];
for (int r = 0; r < rows.Length; r++)
{
sheet.Cells[r + 2, 1].Value = rows[r][0];
sheet.Cells[r + 2, 2].Value = int.Parse(rows[r][1]);
sheet.Cells[r + 2, 3].Value = int.Parse(rows[r][2]);
sheet.Cells[r + 2, 4].Formula = $"B{r+2}+C{r+2}";
}
// Style the header row
using (var header = sheet.Cells[1, 1, 1, 4])
{
header.Style.Font.Bold = true;
header.Style.Fill.PatternType = ExcelFillStyle.Solid;
header.Style.Fill.BackgroundColor.SetColor(Color.DarkBlue);
header.Style.Font.Color.SetColor(Color.White);
}
sheet.Cells.AutoFitColumns();
package.SaveAs(new FileInfo("sales.xlsx"));
Read an existing file
using var package = new ExcelPackage(new FileInfo("sales.xlsx"));
var sheet = package.Workbook.Worksheets[0];
int rows = sheet.Dimension.Rows;
for (int r = 2; r <= rows; r++)
{
Console.WriteLine($"{sheet.Cells[r,1].Value} Q1={sheet.Cells[r,2].Value}");
}
Load from a list
var data = new List<Order>
{
new() { Id = 1, Product = "Widget A", Amount = 120.50m },
new() { Id = 2, Product = "Widget B", Amount = 89.99m },
};
sheet.Cells["A1"].LoadFromCollection(data, printHeaders: true);
Add a chart
var chart = sheet.Drawings.AddChart("SalesChart", eChartType.ColumnClustered);
chart.Title.Text = "Quarterly Sales";
chart.SetPosition(5, 0, 1, 0);
chart.SetSize(600, 300);
var series = chart.Series.Add(sheet.Cells["B2:C3"], sheet.Cells["A2:A3"]);
series.Header = "Revenue";
Framework Support
| Target | Status | Compatible runtimes |
|---|---|---|
| .NET Standard 2.0 | ✔ Full | .NET Core 2.0+, .NET 5/6/7/8/9, .NET Framework 4.6.1+, Mono |
Cross-platform by design. The netstandard2.0 target means one binary runs everywhere — Windows, Linux, and macOS — without any platform-specific lock-in.
License
Licensed under the GNU Lesser General Public License v2.1. This is a community fork. The original EPPlus project lives at JanKallman/EPPlus.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- System.Collections.NonGeneric (>= 4.3.0)
- System.Data.Common (>= 4.3.0)
- System.Data.SqlClient (>= 4.8.6)
- System.Drawing.Common (>= 9.0.0)
- System.Reflection (>= 4.3.0)
- System.Security.Claims (>= 4.3.0)
- System.Security.Cryptography.Pkcs (>= 9.0.0)
- System.Text.Encoding.CodePages (>= 9.0.0)
- System.Threading.Thread (>= 4.3.0)
- System.Threading.ThreadPool (>= 4.3.0)
- System.Xml.XmlDocument (>= 4.3.0)
- System.Xml.XPath.XmlDocument (>= 4.3.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.