|
|
@@ -114,6 +114,36 @@ 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
|
|
|
+ {
|
|
|
+ using var reader = new ExcelReader(path);
|
|
|
+ var worksheet = string.IsNullOrWhiteSpace(worksheetName) ? reader.xlWorkbook.Worksheets.FirstOrDefault()
|
|
|
+ : reader.xlWorkbook.Worksheets.FirstOrDefault(x => x.Name.Equals(worksheetName, StringComparison.InvariantCultureIgnoreCase));
|
|
|
+ if (worksheet == null) yield break;
|
|
|
+
|
|
|
+ foreach (var row in reader.Read<T>(worksheet, startFrom, skip))
|
|
|
+ yield return row;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static IEnumerable<T> ReadData<T>(IXLWorkbook? workbook, string? worksheetName, uint startFrom = 1, uint skip = 0) where T : class
|
|
|
+ {
|
|
|
+ ArgumentNullException.ThrowIfNull(workbook);
|
|
|
+
|
|
|
+ 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
|
|
|
+ {
|
|
|
+ ArgumentNullException.ThrowIfNull(workbook);
|
|
|
+ if (worksheetIndex < 1 || worksheetIndex > workbook.Worksheets.Count) return [];
|
|
|
+
|
|
|
+ var reader = new ExcelReader(workbook);
|
|
|
+ return reader.Read<T>(worksheetIndex, startFrom, skip);
|
|
|
+ }
|
|
|
|
|
|
public void Dispose()
|
|
|
{
|