Browse Source

Aligned interfaces

Piotr Czajkowski 2 months ago
parent
commit
1cbe2aa0e3

+ 1 - 1
ExcelORM/ExcelORM/ExcelORM.csproj

@@ -4,7 +4,7 @@
         <TargetFramework>net7.0</TargetFramework>
         <ImplicitUsings>enable</ImplicitUsings>
         <Nullable>enable</Nullable>
-        <Version>1.0.4</Version>
+        <Version>2.0.0</Version>
         <PackageProjectUrl>https://git.liox.eu/pczajkowski/ExcelORM</PackageProjectUrl>
         <RepositoryUrl>https://github.com/pczajkowski/ExcelORM</RepositoryUrl>
         <GeneratePackageOnBuild>true</GeneratePackageOnBuild>

+ 20 - 4
ExcelORM/ExcelORM/ExcelReader.cs

@@ -1,4 +1,5 @@
 using ClosedXML.Excel;
+using ExcelORM.Models;
 
 namespace ExcelORM;
 
@@ -38,20 +39,35 @@ public class ExcelReader
         }
     }
 
-    public IEnumerable<T> Read<T>(uint startFrom = 1, uint skip = 0) where T : class, new()
+    public IEnumerable<T> Read<T>(string? worksheetName, uint startFrom = 1, uint skip = 0) where T : class, new()
     {
-        return xlWorkbook.Worksheets.SelectMany(worksheet => Read<T>(worksheet, startFrom, skip));
+        var worksheet = xlWorkbook.Worksheets.FirstOrDefault(x => x.Name.Equals(worksheetName, StringComparison.InvariantCultureIgnoreCase));
+        if (worksheet == null) yield break;
+
+        foreach (var value in Read<T>(worksheet, startFrom, skip))
+            yield return value;
     }
 
-    public IEnumerable<T> Read<T>(string? worksheetName, uint startFrom = 1, uint skip = 0) where T : class, new()
+    public IEnumerable<T> Read<T>(int worksheetIndex = 1, uint startFrom = 1, uint skip = 0) where T : class, new()
     {
-        var worksheet = xlWorkbook.Worksheets.FirstOrDefault(x => x.Name.Equals(worksheetName, StringComparison.InvariantCultureIgnoreCase));
+        if (worksheetIndex > xlWorkbook.Worksheets.Count) yield break;
+
+        var worksheet = xlWorkbook.Worksheets.FirstOrDefault(x => x.Position == worksheetIndex);
         if (worksheet == null) yield break;
 
         foreach (var value in Read<T>(worksheet, startFrom, skip))
             yield return value;
     }
 
+    public IEnumerable<T> ReadAll<T>(uint startFrom = 1, uint skip = 0) where T : class, new()
+    {
+        foreach (var worksheet in xlWorkbook.Worksheets)
+        {
+            foreach (var item in Read<T>(worksheet, startFrom, skip))
+                yield return item;
+        }
+    }
+
     private IEnumerable<T> Read<T>(IXLWorksheet? worksheet, uint startFrom, uint skip) where T : class, new()
     {
         if (worksheet == null) yield break;

+ 1 - 1
ExcelORM/ExcelORMTests/ReaderTests.cs

@@ -63,7 +63,7 @@ public class ReaderTests
     public void ReadMultipleSheets()
     {
         var reader = new ExcelReader(MultipleSheetsFile);
-        var results = reader.Read<Test>().ToArray();
+        var results = reader.ReadAll<Test>().ToArray();
         Assert.NotEmpty(results);
         Assert.Equal(6, results.Length);
     }