![]() |
VOOZH | about |
dotnet add package MeshWeaver.DataSetReader.Excel --version 2.5.0
NuGet\Install-Package MeshWeaver.DataSetReader.Excel -Version 2.5.0
<PackageReference Include="MeshWeaver.DataSetReader.Excel" Version="2.5.0" />
<PackageVersion Include="MeshWeaver.DataSetReader.Excel" Version="2.5.0" />Directory.Packages.props
<PackageReference Include="MeshWeaver.DataSetReader.Excel" />Project file
paket add MeshWeaver.DataSetReader.Excel --version 2.5.0
#r "nuget: MeshWeaver.DataSetReader.Excel, 2.5.0"
#:package MeshWeaver.DataSetReader.Excel@2.5.0
#addin nuget:?package=MeshWeaver.DataSetReader.Excel&version=2.5.0Install as a Cake Addin
#tool nuget:?package=MeshWeaver.DataSetReader.Excel&version=2.5.0Install as a Cake Tool
MeshWeaver.DataSetReader.Excel provides the foundational framework for reading Excel files in the MeshWeaver ecosystem. It serves as the base implementation for both binary (.xls) and OpenXML (.xlsx) Excel format readers.
The library provides:
Base abstract class providing common Excel reading functionality:
Factory class for creating appropriate readers:
The framework supports two Excel formats through specialized implementations:
Binary Format (.xls)
MeshWeaver.DataSetReader.Excel.BinaryFormatOpenXML Format (.xlsx)
MeshWeaver.DataSetReader.Excel.OpenXmlFormatpublic class ExcelReader
{
private readonly IExcelReaderFactory _factory;
public ExcelReader()
{
_factory = new ExcelReaderFactory();
}
public IExcelDataReader CreateReader(Stream stream, bool isBinaryFormat)
{
return isBinaryFormat
? _factory.CreateBinaryReader(stream)
: _factory.CreateOpenXmlReader(stream);
}
}
public class ExcelDataReader : ExcelDataSetReaderBase
{
private readonly IExcelReaderFactory _factory;
private readonly bool _isBinaryFormat;
protected override IExcelDataReader GetExcelDataReader(Stream stream)
{
return _isBinaryFormat
? _factory.CreateBinaryReader(stream)
: _factory.CreateOpenXmlReader(stream);
}
}
public async Task<string> GetExcelFormat(Stream stream)
{
using var document = SpreadsheetDocument.Open(stream, false);
return document.CustomFilePropertiesPart?
.Properties?
.Elements<CustomDocumentProperty>()
.FirstOrDefault(x => x.Name == "Format")?
.InnerText;
}
public class ReadOption
{
public bool IsFirstRowAsColumnNames { get; set; } = true;
public bool ConvertOADates { get; set; } = true;
public int SheetIndex { get; set; } = 0;
}
protected (IDataSet DataSet, string Format) ReadAllSheets(Stream stream)
{
var dataSet = new DataSet();
using var reader = GetExcelReader(stream);
while (reader.NextResult())
{
var table = new DataTable(reader.Name);
// Read sheet data into table
dataSet.Tables.Add(table);
}
return (dataSet, GetFormat(stream));
}
private static string GetUniqueColumnName(
string desiredName,
IDataColumnCollection columns)
{
var num = 1;
while (columns.Contains(desiredName))
{
desiredName = $"{desiredName}{num++}";
}
return desiredName;
}
Stream Handling
Format Detection
Data Type Handling
Error Management
public async Task<IDataSet> ImportExcelToDataStructures(
Stream stream,
bool isBinaryFormat)
{
var reader = new ExcelDataReader(_factory, isBinaryFormat);
var (dataSet, _) = reader.ReadDataSetFromFile(stream);
return dataSet;
}
services.AddMessageHub(hub => hub
.ConfigureServices(services => services
.AddSingleton<IExcelReaderFactory, ExcelReaderFactory>()
.AddTransient<IDataSetReader, ExcelDataReader>()
)
);
Extend ExcelDataSetReaderBase for specialized reading:
public class CustomExcelReader : ExcelDataSetReaderBase
{
protected override IExcelDataReader GetExcelDataReader(Stream stream)
{
// Implement custom reader logic
}
}
public interface IExcelFormatHandler
{
bool CanHandle(Stream stream);
IExcelDataReader CreateReader(Stream stream);
string GetFormat(Stream stream);
}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 1 NuGet packages that depend on MeshWeaver.DataSetReader.Excel:
| Package | Downloads |
|---|---|
|
MeshWeaver.Import
Package Description |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.0.0-preview1 | 108 | 4/16/2026 |
| 2.5.0 | 241 | 11/3/2025 |
| 2.4.0 | 213 | 10/2/2025 |
| 2.3.0 | 251 | 8/4/2025 |
| 2.2.0 | 544 | 7/21/2025 |
| 2.1.0 | 236 | 4/6/2025 |
| 2.0.3 | 559 | 3/24/2025 |
| 2.0.2 | 526 | 3/24/2025 |
| 2.0.1 | 183 | 3/21/2025 |
| 2.0.0 | 224 | 3/20/2025 |
| 2.0.0-preview3 | 172 | 2/28/2025 |
| 2.0.0-Preview2 | 177 | 2/10/2025 |
| 2.0.0-preview1 | 163 | 1/6/2025 |
| 1.0.1 | 211 | 10/8/2024 |
| 1.0.0 | 188 | 10/8/2024 |