Ver código fonte

Added ReadData

Piotr Czajkowski 2 semanas atrás
pai
commit
863ab7bfb4

+ 2 - 2
ExcelORM/ExcelORM/ExcelORM.csproj

@@ -4,7 +4,7 @@
         <TargetFramework>net8.0</TargetFramework>
         <ImplicitUsings>enable</ImplicitUsings>
         <Nullable>enable</Nullable>
-        <Version>3.0.2</Version>
+        <Version>3.1.0</Version>
         <PackageProjectUrl>https://git.liox.eu/pczajkowski/ExcelORM</PackageProjectUrl>
         <RepositoryUrl>https://github.com/pczajkowski/ExcelORM</RepositoryUrl>
         <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
@@ -14,7 +14,7 @@
 	<Authors>Piotr Czajkowski</Authors>
 	<Description>Simple library to read/write C# objects from/to Excel files. </Description>
 	<RepositoryType>GitHub</RepositoryType>
-	<PackageReleaseNotes>Few small improvements.</PackageReleaseNotes>
+	<PackageReleaseNotes>Added static ReadData methods for quick access.</PackageReleaseNotes>
     </PropertyGroup>
 
     <ItemGroup>

+ 17 - 0
ExcelORM/ExcelORM/ExcelReader.cs

@@ -114,6 +114,23 @@ public sealed class ExcelReader : IDisposable
     {
         return xlWorkbook.Worksheets.SelectMany(worksheet => Read<T>(worksheet, startFrom, skip));
     }
+    
+    public static IEnumerable<T> ReadData<T>(string? path, string? worksheetName = null, uint startFrom = 1, uint skip = 0) where T : class
+    {
+        var workbook = new XLWorkbook(path);
+        var worksheet = string.IsNullOrWhiteSpace(worksheetName) ? workbook.Worksheets.FirstOrDefault()
+            : workbook.Worksheets.FirstOrDefault(x => x.Name.Equals(worksheetName, StringComparison.InvariantCultureIgnoreCase));
+        
+        return worksheet == null ? [] : ReadData<T>(workbook, worksheet.Position, startFrom, skip);
+    }
+    
+    public static IEnumerable<T> ReadData<T>(IXLWorkbook? workbook, int worksheetIndex = 1, uint startFrom = 1, uint skip = 0) where T : class
+    {
+        if (workbook == null || worksheetIndex < 1 || worksheetIndex > workbook.Worksheets.Count) return [];
+        
+        var reader = new ExcelReader(workbook);
+        return reader.Read<T>(worksheetIndex, startFrom, skip);
+    }
 
     public void Dispose()
     {

+ 11 - 0
ExcelORM/ExcelORMTests/ReaderTests.cs

@@ -136,4 +136,15 @@ public class ReaderTests
         var results = reader.Read<Test>().ToArray();
         Assert.Empty(results);
     }
+    
+    [Fact]
+    public void ReadData()
+    {
+        var results = ExcelReader.ReadData<Test>(RegularFile).ToArray();
+        Assert.NotEmpty(results);
+        
+        var resultsWorkbook = ExcelReader.ReadData<Test>(new XLWorkbook(RegularFile)).ToArray();
+        Assert.NotEmpty(resultsWorkbook);
+        Assert.Equal(results, resultsWorkbook);
+    }
 }

+ 2 - 1
ExcelORM/ExcelORMTests/Usings.cs

@@ -1 +1,2 @@
-global using Xunit;
+global using Xunit;
+global using ClosedXML.Excel;