|
|
@@ -4,7 +4,7 @@ using ExcelORM.Models;
|
|
|
|
|
|
namespace ExcelORM;
|
|
|
|
|
|
-public class ExcelReader : IDisposable
|
|
|
+public sealed class ExcelReader : IDisposable
|
|
|
{
|
|
|
private readonly IXLWorkbook xlWorkbook;
|
|
|
public bool SkipHidden { get; set; }
|
|
|
@@ -67,7 +67,7 @@ public class ExcelReader : IDisposable
|
|
|
|
|
|
var firstRow = worksheet.Row((int)startFrom);
|
|
|
if (firstRow.IsEmpty())
|
|
|
- firstRow = worksheet.RowsUsed().FirstOrDefault(x => x.RowNumber() > startFrom && !x.IsEmpty());
|
|
|
+ firstRow = worksheet.RowsUsed(x => x.RowNumber() > startFrom && !x.IsEmpty()).FirstOrDefault();
|
|
|
|
|
|
if (firstRow == null || firstRow.IsEmpty()) yield break;
|
|
|
|
|
|
@@ -79,7 +79,7 @@ public class ExcelReader : IDisposable
|
|
|
true => worksheet.AutoFilter.VisibleRows
|
|
|
.Where(x => x.RowNumber() > firstRow.RowNumber())
|
|
|
.Select(x => x.WorksheetRow()),
|
|
|
- false => worksheet.RowsUsed().Where(x => x.RowNumber() > firstRow.RowNumber())
|
|
|
+ false => worksheet.RowsUsed(x => x.RowNumber() > firstRow.RowNumber())
|
|
|
|
|
|
};
|
|
|
|
|
|
@@ -101,7 +101,7 @@ public class ExcelReader : IDisposable
|
|
|
|
|
|
public IEnumerable<T> Read<T>(int worksheetIndex = 1, uint startFrom = 1, uint skip = 0) where T : class
|
|
|
{
|
|
|
- if (worksheetIndex > xlWorkbook.Worksheets.Count) yield break;
|
|
|
+ if (worksheetIndex < 1 || worksheetIndex > xlWorkbook.Worksheets.Count) yield break;
|
|
|
|
|
|
var worksheet = xlWorkbook.Worksheets.FirstOrDefault(x => x.Position == worksheetIndex);
|
|
|
if (worksheet == null) yield break;
|
|
|
@@ -117,16 +117,6 @@ public class ExcelReader : IDisposable
|
|
|
|
|
|
public void Dispose()
|
|
|
{
|
|
|
- Dispose(true);
|
|
|
- GC.SuppressFinalize(this);
|
|
|
+ xlWorkbook.Dispose();
|
|
|
}
|
|
|
-
|
|
|
- protected virtual void Dispose(bool disposing)
|
|
|
- {
|
|
|
- if (disposing)
|
|
|
- {
|
|
|
- xlWorkbook.Dispose();
|
|
|
- }
|
|
|
- }
|
|
|
- ~ExcelReader() => Dispose(false);
|
|
|
}
|