Piotr Czajkowski 2 тижнів тому
батько
коміт
d868c70aea

+ 17 - 0
ExcelORM/ExcelORM/ExcelDynamicReader.cs

@@ -105,6 +105,23 @@ public sealed class ExcelDynamicReader : IDisposable
             Cells = Read(worksheet, startFrom, skip)
         });
     }
+    
+    public static IEnumerable<List<DynamicCell>> ReadData(string? path, string? worksheetName = null, uint startFrom = 1, uint skip = 0)
+    {
+        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(workbook, worksheet.Position, startFrom, skip);
+    }
+    
+    public static IEnumerable<List<DynamicCell>> ReadData(IXLWorkbook? workbook, int worksheetIndex = 1, uint startFrom = 1, uint skip = 0)
+    {
+        if (workbook == null || worksheetIndex < 1 || worksheetIndex > workbook.Worksheets.Count) return [];
+        
+        var reader = new ExcelDynamicReader(workbook);
+        return reader.Read(worksheetIndex, startFrom, skip);
+    }
 
     public void Dispose()
     {

+ 11 - 0
ExcelORM/ExcelORMTests/DynamicReaderTests.cs

@@ -58,4 +58,15 @@ public class DynamicReaderTests
         var results = reader.Read().ToArray();
         Assert.Empty(results);
     } 
+    
+    [Fact]
+    public void ReadData()
+    {
+        var results = ExcelDynamicReader.ReadData(RegularFile).ToArray();
+        Assert.NotEmpty(results);
+        
+        var resultsWorkbook = ExcelDynamicReader.ReadData(new XLWorkbook(RegularFile)).ToArray();
+        Assert.NotEmpty(resultsWorkbook);
+        Assert.Equal(results, resultsWorkbook);
+    }
 }