Com.H.Excel
10.2.0
dotnet add package Com.H.Excel --version 10.2.0
NuGet\Install-Package Com.H.Excel -Version 10.2.0
<PackageReference Include="Com.H.Excel" Version="10.2.0" />
<PackageVersion Include="Com.H.Excel" Version="10.2.0" />
<PackageReference Include="Com.H.Excel" />
paket add Com.H.Excel --version 10.2.0
#r "nuget: Com.H.Excel, 10.2.0"
#:package Com.H.Excel@10.2.0
#addin nuget:?package=Com.H.Excel&version=10.2.0
#tool nuget:?package=Com.H.Excel&version=10.2.0
Com.H.Excel
Kindly visit the project's github page for documentation https://github.com/H7O/Com.H.Excel
How to use
Writing Excel
Sample 1
Writing a single sheet excel
using Com.H.Excel;
// Note: you can use a specific class instead of anonymous object.
// e.g. new List<Person>()
var list = new List<object>() {
new { Name = "John", Age = 20 },
new { Name = "Jane", Age = 21 },
new { Name = "Jack", Age = 22 }
};
list.ToExcelFile("c:/temp/excel/excel01.xlsx");
Sample 2
Writing multi-sheeet excel.
using Com.H.Excel;
var sheet1 = new List<object>() {
new { Name = "John", Age = 20 },
new { Name = "Jane", Age = 21 },
new { Name = "Jack", Age = 22 }
};
var sheet2 = new List<object>() {
new { Name = "Tom", Age = 20 },
new { Name = "Helen", Age = 21 },
new { Name = "Linda", Age = 22 },
};
var sheets = new Dictionary<string, IEnumerable<object>>() {
{ "Sheet1", sheet1 },
{ "Sheet2", sheet2 }
};
sheets.ToExcelFile("c:/temp/excel/excel02.xlsx");
Sample 3
Getting a stream reader to a generated excel temp file that gets automatically deleted once the reader is closed.
using Com.H.Excel;
var list = new List<object>() {
new { Name = "John", Age = 20 },
new { Name = "Jane", Age = 21 },
new { Name = "Jack", Age = 22 }
};
var stream = list.ToExcelStream();
Reading Excel
Sample 1
Reading a single sheet in an excel file
using Com.H.Excel;
string filePath = @"c:/temp/excel/excel02.xlsx";
using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
// Note: to parse to a pre-defined non dynamic class (e.g. Person) use:
// var sheet = fileStream.ParseExcelSheet<Person>("Sheet1");
var sheet = fileStream.ParseExcelSheet("Sheet1");
foreach (var person in sheet)
{
Console.WriteLine($"name = {person.Name}, age = {person.Age}");
}
}
Sample 2
Reading all sheets in an excel file
using Com.H.Excel;
string filePath = @"c:/temp/excel/excel02.xlsx";
using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
var sheets = fileStream.ParseExcel();
foreach(var sheet in sheets)
{
Console.WriteLine("-------------------");
Console.WriteLine($"Sheet: {sheet.Key}");
Console.WriteLine("-------------------");
foreach (var person in sheet.Value)
{
Console.WriteLine($"name = {person.Name}, age = {person.Age}");
}
Console.WriteLine();
}
}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. 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 is compatible. 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 is compatible. 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 is compatible. 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 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. |
| .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 is compatible. |
| .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
- DocumentFormat.OpenXml (>= 3.5.1 && < 4.0.0)
-
.NETStandard 2.1
- DocumentFormat.OpenXml (>= 3.5.1 && < 4.0.0)
-
net10.0
- DocumentFormat.OpenXml (>= 3.5.1 && < 4.0.0)
-
net6.0
- DocumentFormat.OpenXml (>= 3.5.1 && < 4.0.0)
-
net7.0
- DocumentFormat.OpenXml (>= 3.5.1 && < 4.0.0)
-
net8.0
- DocumentFormat.OpenXml (>= 3.5.1 && < 4.0.0)
-
net9.0
- DocumentFormat.OpenXml (>= 3.5.1 && < 4.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Numeric cells in dynamic parsing now come back as int/decimal instead of strings. Integer-formatted cells with fractional values fall back to decimal so no precision is lost. Typed parsing via Convert.ChangeType now uses InvariantCulture so decimals work on non-en machines. BREAKING for dynamic consumers casting numeric properties to string — switch to (int)/(decimal) or Convert.ToString.