Browse Source

Added WriteAll

Piotr Czajkowski 2 months ago
parent
commit
9ff7824252

+ 8 - 0
ExcelORM/ExcelORM/ExcelDynamicWriter.cs

@@ -33,6 +33,14 @@ public class ExcelDynamicWriter
         Write(values, xlWorksheet, append);
     }
 
+    public void WriteAll(IEnumerable<DynamicWorksheet>? dynamicWorksheets, bool append = false)
+    {
+        if (dynamicWorksheets == null) return;
+
+        foreach (var dynamicWorksheet in dynamicWorksheets)
+            Write(dynamicWorksheet.Cells, dynamicWorksheet.Name, append);
+    }
+
     private static void Write(IEnumerable<List<DynamicCell>> values, IXLWorksheet worksheet, bool append)
     {
         var rowIndex = append switch

+ 26 - 0
ExcelORM/ExcelORMTests/DynamicWriterTests.cs

@@ -5,6 +5,7 @@ namespace ExcelORMTests;
 public class DynamicWriterTests
 {
     private const string DifficultFile = "testFiles/dynamicDifficult.xlsx";
+    private const string MultipleSheetsFile = "testFiles/multipleSheets.xlsx";
 
     [Fact]
     public void Write()
@@ -28,4 +29,29 @@ public class DynamicWriterTests
 
         File.Delete(testFile);
     }
+
+    [Fact]
+    public void WriteAll()
+    {
+        var testFile = Path.GetRandomFileName();
+        testFile = Path.ChangeExtension(testFile, "xlsx");
+
+        var reader = new ExcelDynamicReader(MultipleSheetsFile);
+        var results = reader.ReadAll().ToArray();
+        Assert.NotEmpty(results);
+        
+        var writer = new ExcelDynamicWriter();
+        writer.WriteAll(results);
+        writer.SaveAs(testFile);
+
+        var savedReader = new ExcelDynamicReader(testFile);
+        var savedResults = savedReader.ReadAll().ToArray();
+        Assert.NotEmpty(savedResults);
+        Assert.Equal(results.First().Name, savedResults.First().Name);
+        Assert.Equal(results.First().Cells?.Count(), savedResults.First().Cells?.Count());
+        Assert.Equal(results.Last().Name, savedResults.Last().Name);
+        Assert.Equal(results.Last().Cells?.Count(), savedResults.Last().Cells?.Count());
+
+        File.Delete(testFile);
+    }
 }