diff --git a/src/MiniExcel.OpenXml/Styles/Builder/DefaultSheetStyleBuilder.cs b/src/MiniExcel.OpenXml/Styles/Builder/DefaultSheetStyleBuilder.cs index 54b1f2ad..191ad637 100644 --- a/src/MiniExcel.OpenXml/Styles/Builder/DefaultSheetStyleBuilder.cs +++ b/src/MiniExcel.OpenXml/Styles/Builder/DefaultSheetStyleBuilder.cs @@ -364,9 +364,14 @@ protected override async Task GenerateCellXfAsync() }; /* Empty style is required because Excel always considers the first one to be the default and ignores all its properties - * + * * */ await NewWriter.WriteStartElementAsync(OldReader.Prefix, "xf", OldReader.NamespaceURI).ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "numFmtId", null, "0").ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "fontId", null, "0").ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "fillId", null, "0").ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "borderId", null, "0").ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "xfId", null, "0").ConfigureAwait(false); await NewWriter.WriteEndElementAsync().ConfigureAwait(false); /* diff --git a/src/MiniExcel.OpenXml/Styles/Builder/MinimalSheetStyleBuilder.cs b/src/MiniExcel.OpenXml/Styles/Builder/MinimalSheetStyleBuilder.cs index 4f657422..cfab877f 100644 --- a/src/MiniExcel.OpenXml/Styles/Builder/MinimalSheetStyleBuilder.cs +++ b/src/MiniExcel.OpenXml/Styles/Builder/MinimalSheetStyleBuilder.cs @@ -85,24 +85,39 @@ protected override async Task GenerateCellStyleXfAsync() protected override async Task GenerateCellXfAsync() { /* - * - * - * - * - * - * - */ - await NewWriter.WriteStartElementAsync(OldReader.Prefix, "xf", OldReader.NamespaceURI).ConfigureAwait(false); - await NewWriter.WriteEndElementAsync().ConfigureAwait(false); - await NewWriter.WriteStartElementAsync(OldReader.Prefix, "xf", OldReader.NamespaceURI).ConfigureAwait(false); - await NewWriter.WriteEndElementAsync().ConfigureAwait(false); - await NewWriter.WriteStartElementAsync(OldReader.Prefix, "xf", OldReader.NamespaceURI).ConfigureAwait(false); - await NewWriter.WriteEndElementAsync().ConfigureAwait(false); + * + * + * + * + * + * + * */ + + for (int i = 0; i < 3; i++) + { + await NewWriter.WriteStartElementAsync(OldReader.Prefix, "xf", OldReader.NamespaceURI).ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "numFmtId", null, "0").ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "fontId", null, "0").ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "fillId", null, "0").ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "borderId", null, "0").ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "xfId", null, "0").ConfigureAwait(false); + await NewWriter.WriteEndElementAsync().ConfigureAwait(false); + } + await NewWriter.WriteStartElementAsync(OldReader.Prefix, "xf", OldReader.NamespaceURI).ConfigureAwait(false); await NewWriter.WriteAttributeStringAsync(null, "numFmtId", null, "14").ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "fontId", null, "0").ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "fillId", null, "0").ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "borderId", null, "0").ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "xfId", null, "0").ConfigureAwait(false); await NewWriter.WriteAttributeStringAsync(null, "applyNumberFormat", null, "1").ConfigureAwait(false); await NewWriter.WriteEndElementAsync().ConfigureAwait(false); await NewWriter.WriteStartElementAsync(OldReader.Prefix, "xf", OldReader.NamespaceURI).ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "numFmtId", null, "0").ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "fontId", null, "0").ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "fillId", null, "0").ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "borderId", null, "0").ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "xfId", null, "0").ConfigureAwait(false); await NewWriter.WriteEndElementAsync().ConfigureAwait(false); await NewWriter.WriteStartElementAsync(OldReader.Prefix, "xf", OldReader.NamespaceURI).ConfigureAwait(false); await NewWriter.WriteAttributeStringAsync(null, "numFmtId", null, "21").ConfigureAwait(false); @@ -117,6 +132,10 @@ protected override async Task GenerateCellXfAsync() */ await NewWriter.WriteStartElementAsync(OldReader.Prefix, "xf", OldReader.NamespaceURI).ConfigureAwait(false); await NewWriter.WriteAttributeStringAsync(null, "numFmtId", null, (numFmtIndex + i).ToString()).ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "fontId", null, "0").ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "fillId", null, "0").ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "borderId", null, "0").ConfigureAwait(false); + await NewWriter.WriteAttributeStringAsync(null, "xfId", null, "0").ConfigureAwait(false); await NewWriter.WriteAttributeStringAsync(null, "applyNumberFormat", null, "1").ConfigureAwait(false); await NewWriter.WriteEndElementAsync().ConfigureAwait(false); } diff --git a/tests/MiniExcel.OpenXml.Tests/MiniExcelIssueAsyncTests.cs b/tests/MiniExcel.OpenXml.Tests/MiniExcelIssueAsyncTests.cs index 5370e2a9..8dbd0eb0 100644 --- a/tests/MiniExcel.OpenXml.Tests/MiniExcelIssueAsyncTests.cs +++ b/tests/MiniExcel.OpenXml.Tests/MiniExcelIssueAsyncTests.cs @@ -1507,6 +1507,30 @@ class Issue520Dto(long l1, DateTime dt, long l2) public long ValueToSettle { get; set; } = l2; } + [Fact] + public async Task TestIssue627() + { + var data = new[] { new { LongNumber = "1550432695793487872" } }; + + var config = new OpenXmlConfiguration + { + DynamicColumns = + [ + new DynamicExcelColumn("LongNumber") { Format = "@" } + ] + }; + + await using var ms = new MemoryStream(); + await _excelExporter.ExportAsync(ms, data, configuration: config); + ms.Seek(0, SeekOrigin.Begin); + + using var package = new ExcelPackage(ms); + var cell = package.Workbook.Worksheets[0].Cells["A2"]; + + Assert.Equal("1550432695793487872", cell.GetValue()); + Assert.Equal("@", cell.Style.Numberformat.Format); + } + [Fact] public async Task TestIssue951() { @@ -1534,28 +1558,4 @@ class Issue951 public object this[string test] => new(); } - - [Fact] - public async Task TestIssue627() - { - var data = new[] { new { LongNumber = "1550432695793487872" } }; - - var config = new OpenXmlConfiguration - { - DynamicColumns = - [ - new DynamicExcelColumn("LongNumber") { Format = "@" } - ] - }; - - await using var ms = new MemoryStream(); - await _excelExporter.ExportAsync(ms, data, configuration: config); - ms.Seek(0, SeekOrigin.Begin); - - using var package = new ExcelPackage(ms); - var cell = package.Workbook.Worksheets[0].Cells["A2"]; - - Assert.Equal("1550432695793487872", cell.GetValue()); - Assert.Equal("@", cell.Style.Numberformat.Format); - } } \ No newline at end of file diff --git a/tests/MiniExcel.OpenXml.Tests/MiniExcelOpenXmlAsyncTests.cs b/tests/MiniExcel.OpenXml.Tests/MiniExcelOpenXmlAsyncTests.cs index cdf8b212..31b58c15 100644 --- a/tests/MiniExcel.OpenXml.Tests/MiniExcelOpenXmlAsyncTests.cs +++ b/tests/MiniExcel.OpenXml.Tests/MiniExcelOpenXmlAsyncTests.cs @@ -35,8 +35,8 @@ public async Task SaveAsControlChracter() var input = chars.Select(s => new { Test = s.ToString() }); await _excelExporter.ExportAsync(path, input); - var rows2 = _excelImporter.QueryAsync(path, true).ToBlockingEnumerable().ToArray(); - var rows1 = _excelImporter.QueryAsync(path).ToBlockingEnumerable().ToArray(); + var rows2 = await _excelImporter.QueryAsync(path, true).ToListAsync(); + var rows1 = await _excelImporter.QueryAsync(path).ToListAsync(); } private class SaveAsControlChracterVO @@ -177,7 +177,7 @@ private class CustomAttributesWihoutVaildPropertiesTestPoco public async Task QueryCastToIDictionary() { var path = PathHelper.GetFile("xlsx/TestCenterEmptyRow/TestCenterEmptyRow.xlsx"); - foreach (IDictionary row in _excelImporter.QueryAsync(path).ToBlockingEnumerable()) + await foreach (IDictionary row in _excelImporter.QueryAsync(path)) { _ = row; } @@ -189,8 +189,7 @@ public async Task CenterEmptyRowsQueryTest() var path = PathHelper.GetFile("xlsx/TestCenterEmptyRow/TestCenterEmptyRow.xlsx"); await using (var stream = File.OpenRead(path)) { - var d = _excelImporter.QueryAsync(stream).ToBlockingEnumerable().Cast>(); - var rows = d.ToList(); + var rows = await _excelImporter.QueryAsync(stream).Cast>().ToListAsync(); Assert.Equal("a", rows[0]["A"]); Assert.Equal("b", rows[0]["B"]); Assert.Equal("c", rows[0]["C"]); @@ -225,8 +224,7 @@ public async Task CenterEmptyRowsQueryTest() await using (var stream = File.OpenRead(path)) { - var d = _excelImporter.QueryAsync(stream, useHeaderRow: true).ToBlockingEnumerable().Cast>(); - var rows = d.ToList(); + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: true).Cast>().ToListAsync(); Assert.Equal(1d, rows[0]["a"]); Assert.Null(rows[0]["b"]); Assert.Equal(3d, rows[0]["c"]); @@ -259,8 +257,7 @@ public async Task TestDynamicQueryBasic_WithoutHead() { var path = PathHelper.GetFile("xlsx/TestDynamicQueryBasic_WithoutHead.xlsx"); await using var stream = File.OpenRead(path); - var d = _excelImporter.QueryAsync(stream).ToBlockingEnumerable().Cast>(); - var rows = d.ToList(); + var rows = await _excelImporter.QueryAsync(stream).Cast>().ToListAsync(); Assert.Equal("MiniExcel", rows[0]["A"]); Assert.Equal(1d, rows[0]["B"]); @@ -274,8 +271,7 @@ public async Task TestDynamicQueryBasic_useHeaderRow() var path = PathHelper.GetFile("xlsx/TestDynamicQueryBasic.xlsx"); await using (var stream = File.OpenRead(path)) { - var d = _excelImporter.QueryAsync(stream, useHeaderRow: true).ToBlockingEnumerable().Cast>(); - var rows = d.ToList(); + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: true).Cast>().ToListAsync(); Assert.Equal("MiniExcel", rows[0]["Column1"]); Assert.Equal(1d, rows[0]["Column2"]); Assert.Equal("Github", rows[1]["Column1"]); @@ -283,8 +279,7 @@ public async Task TestDynamicQueryBasic_useHeaderRow() } { - var d = _excelImporter.QueryAsync(path, useHeaderRow: true).ToBlockingEnumerable(); - var rows = d.ToList(); + var rows = await _excelImporter.QueryAsync(path, useHeaderRow: true).ToListAsync(); Assert.Equal("MiniExcel", rows[0].Column1); Assert.Equal(1d, rows[0].Column2); Assert.Equal("Github", rows[1].Column1); @@ -363,8 +358,7 @@ public async Task TestDatetimeSpanFormat_ClosedXml() var path = PathHelper.GetFile("xlsx/TestDatetimeSpanFormat_ClosedXml.xlsx"); await using var stream = FileHelper.OpenRead(path); - var d = _excelImporter.QueryAsync(stream).ToBlockingEnumerable().Cast>(); - var row = d.First(); + var row = await _excelImporter.QueryAsync(stream).Cast>().FirstAsync(); var a = row["A"]; var b = row["B"]; @@ -378,14 +372,12 @@ public async Task LargeFileQueryStrongTypeMapping_Test() const string path = "../../../../../benchmarks/MiniExcel.Benchmarks/Test1,000,000x10.xlsx"; await using (var stream = File.OpenRead(path)) { - var d = _excelImporter.QueryAsync(stream).ToBlockingEnumerable(); - var rows = d.Take(2).ToList(); + var rows = await _excelImporter.QueryAsync(stream).Take(2).ToListAsync(); Assert.Equal("HelloWorld2", rows[0].HelloWorld1); Assert.Equal("HelloWorld3", rows[1].HelloWorld1); } { - var d = _excelImporter.QueryAsync(path).ToBlockingEnumerable(); - var rows = d.Take(2).ToList(); + var rows = await _excelImporter.QueryAsync(path).Take(2).ToListAsync(); Assert.Equal("HelloWorld2", rows[0].HelloWorld1); Assert.Equal("HelloWorld3", rows[1].HelloWorld1); } @@ -405,8 +397,7 @@ public async Task QueryExcelDataReaderCheckTest(string path) var exceldatareaderResult = reader.AsDataSet(); await using var stream = File.OpenRead(path); - var d = _excelImporter.QueryAsync(stream).ToBlockingEnumerable(); - var rows = d.ToList(); + var rows = await _excelImporter.QueryAsync(stream).ToListAsync(); Assert.Equal(exceldatareaderResult.Tables[0].Rows.Count, rows.Count); foreach (IDictionary row in rows) @@ -427,8 +418,7 @@ public async Task QuerySheetWithoutRAttribute() var path = PathHelper.GetFile("xlsx/TestWihoutRAttribute.xlsx"); await using var stream = File.OpenRead(path); - var d = _excelImporter.QueryAsync(stream).ToBlockingEnumerable().Cast>(); - var rows = d.ToList(); + var rows = await _excelImporter.QueryAsync(stream).Cast>().ToListAsync(); var keys = rows.First().Keys; Assert.Equal(2, rows.Count); @@ -450,9 +440,10 @@ public async Task FixDimensionJustOneColumnParsingError_Test() { var path = PathHelper.GetFile("xlsx/TestDimensionC3.xlsx"); await using var stream = File.OpenRead(path); - var d = _excelImporter.QueryAsync(stream).ToBlockingEnumerable(); - var rows = d.ToList(); + + var rows = await _excelImporter.QueryAsync(stream).ToListAsync(); var keys = (rows.First() as IDictionary)?.Keys; + Assert.Equal(3, keys?.Count); Assert.Equal(2, rows.Count); } @@ -479,8 +470,7 @@ public async Task SaveAsFileWithDimensionByICollection() await _excelExporter.ExportAsync(path, values); await using (var stream = File.OpenRead(path)) { - var d = _excelImporter.QueryAsync(stream, useHeaderRow: false).ToBlockingEnumerable().Cast>(); - var rows = d.ToList(); + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: false).Cast>().ToListAsync(); Assert.Equal(3, rows.Count); Assert.Equal("A", rows[0]["A"]); Assert.Equal("A", rows[1]["A"]); @@ -489,8 +479,7 @@ public async Task SaveAsFileWithDimensionByICollection() await using (var stream = File.OpenRead(path)) { - var d = _excelImporter.QueryAsync(stream, useHeaderRow: true).ToBlockingEnumerable().Cast>(); - var rows = d.ToList(); + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: true).Cast>().ToListAsync(); Assert.Equal(2, rows.Count); Assert.Equal("A", rows[0]["A"]); Assert.Equal("A", rows[1]["A"]); @@ -513,8 +502,7 @@ public async Task SaveAsFileWithDimensionByICollection() await _excelExporter.ExportAsync(path, values, false); await using (var stream = File.OpenRead(path)) { - var d = _excelImporter.QueryAsync(stream, useHeaderRow: false).ToBlockingEnumerable(); - var rows = d.ToList(); + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: false).ToListAsync(); Assert.Empty(rows); } @@ -527,8 +515,7 @@ public async Task SaveAsFileWithDimensionByICollection() await _excelExporter.ExportAsync(path, values); { await using var stream = File.OpenRead(path); - var d = _excelImporter.QueryAsync(stream, useHeaderRow: false).ToBlockingEnumerable(); - var rows = d.ToList(); + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: false).ToListAsync(); Assert.Single(rows); } Assert.Equal("A1:B1", SheetHelper.GetFirstSheetDimensionRefValue(path)); @@ -550,8 +537,7 @@ public async Task SaveAsFileWithDimensionByICollection() await using (var stream = File.OpenRead(path)) { - var d = _excelImporter.QueryAsync(stream, useHeaderRow: false).ToBlockingEnumerable().Cast>(); - var rows = d.ToList(); + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: false).Cast>().ToListAsync(); Assert.Equal(3, rows.Count); Assert.Equal("A", rows[0]["A"]); Assert.Equal("A", rows[1]["A"]); @@ -560,8 +546,7 @@ public async Task SaveAsFileWithDimensionByICollection() await using (var stream = File.OpenRead(path)) { - var d = _excelImporter.QueryAsync(stream, useHeaderRow: true).ToBlockingEnumerable().Cast>(); - var rows = d.ToList(); + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: true).Cast>().ToListAsync(); Assert.Equal(2, rows.Count); Assert.Equal("A", rows[0]["A"]); Assert.Equal("A", rows[1]["A"]); @@ -619,10 +604,9 @@ public async Task SaveAsFileWithDimension() await using (var stream = File.OpenRead(path)) { - var rows = _excelImporter.QueryAsync(stream, useHeaderRow: true) - .ToBlockingEnumerable() + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: true) .Cast>() - .ToList(); + .ToListAsync(); Assert.Equal(2, rows.Count); Assert.Equal(@"""<>+-*//}{\\n", rows[0]["a"]); @@ -633,10 +617,9 @@ public async Task SaveAsFileWithDimension() await using (var stream = File.OpenRead(path)) { - var rows = _excelImporter.QueryAsync(stream) - .ToBlockingEnumerable() + var rows = await _excelImporter.QueryAsync(stream) .Cast>() - .ToList(); + .ToListAsync(); Assert.Equal(3, rows.Count); Assert.Equal("a", rows[0]["A"]); @@ -698,21 +681,23 @@ public async Task QueryByLINQExtensionsVoidTaskLargeFileOOMTest() const string path = "../../../../../benchmarks/MiniExcel.Benchmarks/Test1,000,000x10.xlsx"; { - var row = _excelImporter.QueryAsync(path).ToBlockingEnumerable().First(); + var row = await _excelImporter.QueryAsync(path).FirstAsync(); Assert.Equal("HelloWorld1", row.A); } await using (var stream = File.OpenRead(path)) { - var d = _excelImporter.QueryAsync(stream).ToBlockingEnumerable().Cast>(); - var row = d.First(); + var row = await _excelImporter.QueryAsync(stream).Cast>().FirstAsync(); Assert.Equal("HelloWorld1", row["A"]); } { - var d = _excelImporter.QueryAsync(path).ToBlockingEnumerable().Cast>(); - var rows = d.Take(10); - Assert.Equal(10, rows.Count()); + var count = await _excelImporter.QueryAsync(path) + .Cast>() + .Take(10) + .CountAsync(); + + Assert.Equal(10, count); } } @@ -748,8 +733,7 @@ public async Task SaveAsByIEnumerableIDictionary() await using (var stream = File.OpenRead(path)) { - var d = _excelImporter.QueryAsync(stream, useHeaderRow: false).ToBlockingEnumerable().Cast>(); - var rows = d.ToList(); + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: false).Cast>().ToListAsync(); Assert.Equal("Column1", rows[0]["A"]); Assert.Equal("Column2", rows[0]["B"]); Assert.Equal("MiniExcel", rows[1]["A"]); @@ -760,8 +744,7 @@ public async Task SaveAsByIEnumerableIDictionary() await using (var stream = File.OpenRead(path)) { - var d = _excelImporter.QueryAsync(stream, useHeaderRow: true).ToBlockingEnumerable().Cast>(); - var rows = d.ToList(); + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: true).Cast>().ToListAsync(); Assert.Equal(2, rows.Count); Assert.Equal("MiniExcel", rows[0]["Column1"]); Assert.Equal(1d, rows[0]["Column2"]); @@ -785,8 +768,7 @@ public async Task SaveAsByIEnumerableIDictionary() await using (var stream = File.OpenRead(path)) { - var d = _excelImporter.QueryAsync(stream, useHeaderRow: false).ToBlockingEnumerable(); - var rows = d.ToList(); + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: false).ToListAsync(); Assert.Equal(3, rows.Count); } Assert.Equal("A1:B3", SheetHelper.GetFirstSheetDimensionRefValue(path)); @@ -817,8 +799,7 @@ public async Task SaveAsByIEnumerableIDictionaryWithDynamicConfiguration() await using (var stream = File.OpenRead(path)) { - var d = _excelImporter.QueryAsync(stream, useHeaderRow: true).ToBlockingEnumerable().Cast>(); - var rows = d.ToList(); + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: true).Cast>().ToListAsync(); Assert.Equal(2, rows.Count); Assert.Equal("Name Column", rows[0].Keys.ElementAt(0)); Assert.Equal("Value Column", rows[0].Keys.ElementAt(1)); @@ -901,7 +882,7 @@ public async Task SaveAsByDapperRows() await using (var stream = File.OpenRead(path)) { - var rows = _excelImporter.QueryAsync(stream, useHeaderRow: true).ToBlockingEnumerable().Cast>().ToList(); + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: true).Cast>().ToListAsync(); Assert.Equal("MiniExcel", rows[0]["Column1"]); Assert.Equal(1d, rows[0]["Column2"]); Assert.Equal("Github", rows[1]["Column1"]); @@ -938,7 +919,7 @@ public async Task SaveAsByDapperRows() await using (var stream = File.OpenRead(path)) { - var rows = _excelImporter.QueryAsync(stream, useHeaderRow: false).ToBlockingEnumerable().Cast>().ToList(); + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: false).Cast>().ToListAsync(); Assert.Equal("Column1", rows[0]["A"]); Assert.Equal("Column2", rows[0]["B"]); Assert.Equal("MiniExcel", rows[1]["A"]); @@ -949,7 +930,7 @@ public async Task SaveAsByDapperRows() await using (var stream = File.OpenRead(path)) { - var rows = _excelImporter.QueryAsync(stream, useHeaderRow: true).ToBlockingEnumerable().Cast>().ToList(); + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: true).Cast>().ToListAsync(); Assert.Equal("MiniExcel", rows[0]["Column1"]); Assert.Equal(1d, rows[0]["Column2"]); Assert.Equal("Github", rows[1]["Column1"]); @@ -976,7 +957,7 @@ public async Task QueryByStrongTypeParameterTest() await _excelExporter.ExportAsync(path, values); await using var stream = File.OpenRead(path); - var rows = _excelImporter.QueryAsync(stream, useHeaderRow: true).ToBlockingEnumerable().Cast>().ToList(); + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: true).Cast>().ToListAsync(); Assert.Equal("MiniExcel", rows[0]["Column1"]); Assert.Equal(1d, rows[0]["Column2"]); @@ -997,7 +978,7 @@ public async Task QueryByDictionaryStringAndObjectParameterTest() await _excelExporter.ExportAsync(path, values); await using var stream = File.OpenRead(path); - var rows = _excelImporter.QueryAsync(stream, useHeaderRow: true).ToBlockingEnumerable().Cast>().ToList(); + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: true).Cast>().ToListAsync(); Assert.Equal("MiniExcel", rows[0]["Column1"]); Assert.Equal(1d, rows[0]["Column2"]); @@ -1024,8 +1005,8 @@ public async Task SQLiteInsertTest() await using (var transaction = connection.BeginTransaction()) await using (var stream = File.OpenRead(path)) { - var rows = _excelImporter.QueryAsync(stream).ToBlockingEnumerable().Cast>(); - foreach (var row in rows) + var rows = _excelImporter.QueryAsync(stream).Cast>(); + await foreach (var row in rows) await connection.ExecuteAsync( "insert into T (A,B) values (@A,@B)", new { A = row["A"], B = row["B"] }, @@ -1057,8 +1038,7 @@ await _excelExporter.ExportAsync(path, new[] await using (var stream = File.OpenRead(path)) { - var d = _excelImporter.QueryAsync(stream, useHeaderRow: true).ToBlockingEnumerable().Cast>(); - var rows = d.ToList(); + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: true).Cast>().ToListAsync(); Assert.Equal("MiniExcel", rows[0]["Column1"]); Assert.Equal(1d, rows[0]["Column2"]); Assert.Equal("Github", rows[1]["Column1"]); @@ -1087,10 +1067,9 @@ public async Task SaveAsBasicStreamTest() await using (var stream = File.OpenRead(path)) { - var rows = _excelImporter.QueryAsync(stream, useHeaderRow: true) - .ToBlockingEnumerable() + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: true) .Cast>() - .ToList(); + .ToListAsync(); Assert.Equal("MiniExcel", rows[0]["Column1"]); Assert.Equal(1d, rows[0]["Column2"]); @@ -1117,10 +1096,9 @@ public async Task SaveAsBasicStreamTest() await using (var stream = File.OpenRead(path)) { - var rows = _excelImporter.QueryAsync(stream, useHeaderRow: true) - .ToBlockingEnumerable() + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: true) .Cast>() - .ToList(); + .ToListAsync(); Assert.Equal("MiniExcel", rows[0]["Column1"]); Assert.Equal(1d, rows[0]["Column2"]); @@ -1305,9 +1283,9 @@ public async Task DynamicColumnsConfigurationIsUsedWhenCreatingExcelUsingIDataRe await _excelExporter.ExportAsync(path.ToString(), reader, configuration: configuration); await using var stream = File.OpenRead(path.ToString()); - var rows = _excelImporter.QueryAsync(stream, useHeaderRow: true).ToBlockingEnumerable() + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: true) .Cast>() - .ToList(); + .ToListAsync(); Assert.Contains("Name of something", rows[0]); Assert.Contains("Its value", rows[0]); @@ -1371,9 +1349,9 @@ public async Task DynamicColumnsConfigurationIsUsedWhenCreatingExcelUsingDataTab await _excelExporter.ExportAsync(path.ToString(), table, configuration: configuration); await using var stream = File.OpenRead(path.ToString()); - var rows = _excelImporter.QueryAsync(stream, useHeaderRow: true).ToBlockingEnumerable() + var rows = await _excelImporter.QueryAsync(stream, useHeaderRow: true) .Cast>() - .ToList(); + .ToListAsync(); Assert.Contains("Name of something", rows[0]); Assert.Contains("Its value", rows[0]);