PanoramicData.SheetMagic.Benchmarks
1.0.0
dotnet add package PanoramicData.SheetMagic.Benchmarks --version 1.0.0
NuGet\Install-Package PanoramicData.SheetMagic.Benchmarks -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PanoramicData.SheetMagic.Benchmarks" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PanoramicData.SheetMagic.Benchmarks" Version="1.0.0" />
<PackageReference Include="PanoramicData.SheetMagic.Benchmarks" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add PanoramicData.SheetMagic.Benchmarks --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: PanoramicData.SheetMagic.Benchmarks, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package PanoramicData.SheetMagic.Benchmarks@1.0.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=PanoramicData.SheetMagic.Benchmarks&version=1.0.0
#tool nuget:?package=PanoramicData.SheetMagic.Benchmarks&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
PanoramicData.SheetMagic
Easily save/load data to/from Excel (XLSX) documents using strongly-typed C# classes.
Requirements
- .NET 9.0 - This library targets .NET 9.0 only
Installation
dotnet add package PanoramicData.SheetMagic
Features
- ? Strongly-typed - Work with your own C# classes
- ? Simple API - Easy to read and write XLSX files
- ? Multiple sheets - Add and read multiple worksheets
- ? Styling support - Apply table styles to your data
- ? Extended properties - Support for dynamic properties via
Extended<T> - ? Streams and files - Work with both
FileInfoandStreamobjects - ? Type safe - Full support for common .NET types including nullable types
Quick Start
Writing to a file
using PanoramicData.SheetMagic;
// Define your class
public class Thing
{
public string PropertyA { get; set; }
public int PropertyB { get; set; }
}
// Create some data
var things = new List<Thing>
{
new Thing { PropertyA = "Value 1", PropertyB = 1 },
new Thing { PropertyA = "Value 2", PropertyB = 2 },
};
// Write to Excel file
var fileInfo = new FileInfo($"Output {DateTime.UtcNow:yyyyMMddTHHmmss}Z.xlsx");
using var workbook = new MagicSpreadsheet(fileInfo);
workbook.AddSheet(things);
workbook.Save();
Reading from a file
using PanoramicData.SheetMagic;
// Read from Excel file
using var workbook = new MagicSpreadsheet(fileInfo);
workbook.Load();
// Read from default worksheet (first sheet)
var cars = workbook.GetList<Car>();
// Read from a specific worksheet by name
var animals = workbook.GetList<Animal>("Animals");
Advanced Features
Working with Streams
// Write to a stream
using var stream = new MemoryStream();
using (var workbook = new MagicSpreadsheet(stream))
{
workbook.AddSheet(data);
workbook.Save();
}
// Read from a stream
stream.Position = 0;
using var workbook = new MagicSpreadsheet(stream);
workbook.Load();
var items = workbook.GetList<MyClass>();
Multiple Sheets
using var workbook = new MagicSpreadsheet(fileInfo);
workbook.AddSheet(cars, "Cars");
workbook.AddSheet(animals, "Animals");
workbook.AddSheet(products, "Products");
workbook.Save();
Applying Table Styles
var options = new AddSheetOptions
{
TableOptions = new TableOptions
{
Name = "MyTable",
DisplayName = "MyTable1",
XlsxTableStyle = XlsxTableStyle.TableStyleMedium2,
ShowRowStripes = true,
ShowColumnStripes = false,
ShowFirstColumn = false,
ShowLastColumn = false
}
};
workbook.AddSheet(data, "StyledSheet", options);
Custom Property Headers
Use the Description attribute to customize column headers:
using System.ComponentModel;
public class Employee
{
public int Id { get; set; }
[Description("Full Name")]
public string Name { get; set; }
[Description("Hire Date")]
public DateTime HireDate { get; set; }
}
Property Filtering
// Include only specific properties
var options = new AddSheetOptions
{
IncludeProperties = new[] { "Name", "Age", "City" }
};
workbook.AddSheet(people, "Filtered", options);
// Exclude specific properties
var options = new AddSheetOptions
{
ExcludeProperties = new[] { "InternalId", "Password" }
};
workbook.AddSheet(users, "Public", options);
Extended Properties (Dynamic Properties)
Work with objects that have both strongly-typed and dynamic properties:
var extendedData = new List<Extended<MyClass>>
{
new Extended<MyClass>(
new MyClass { Id = 1, Name = "Item 1" },
new Dictionary<string, object?>
{
{ "DynamicProp1", "Value1" },
{ "DynamicProp2", 42 }
}
)
};
workbook.AddSheet(extendedData);
workbook.Save();
// Reading extended properties
var loadedData = workbook.GetExtendedList<MyClass>();
foreach (var item in loadedData)
{
Console.WriteLine($"{item.Item.Name}");
foreach (var prop in item.Properties)
{
Console.WriteLine($" {prop.Key}: {prop.Value}");
}
}
Supported Types
- Primitives:
int,long,short,uint,ulong,ushort - Floating point:
float,double,decimal - Boolean:
bool - Dates:
DateTime,DateTimeOffset - Strings:
string - Enums (stored as text)
- Lists:
List<string>(with configurable delimiter) - All nullable versions of the above
Options
Configure behavior with the Options class:
var options = new Options
{
StopProcessingOnFirstEmptyRow = true,
IgnoreUnmappedProperties = true,
EmptyRowInterpretedAsNull = false,
LoadNullExtendedProperties = true,
ListSeparator = ";"
};
using var workbook = new MagicSpreadsheet(fileInfo, options);
Known Limitations
- JObject Support: Direct
JObjectserialization is not yet supported. UseExtended<object>instead. - Nested Complex Objects: Properties of type
List<ComplexType>cannot be loaded from Excel (though they can be saved as delimited strings). - Large Integer Precision: Excel stores all numbers as doubles, so very large
Int64/UInt64values (nearMaxValue) may lose precision. - Special Values:
double.NaNandnullnullable types are stored as empty strings in Excel.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
See the LICENSE file for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- BenchmarkDotNet (>= 0.14.0)
- PanoramicData.SheetMagic (>= 3.0.122)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 71 | 4/5/2026 |