From 0036db0a650903e48ba4aa9e4a6332604377e215 Mon Sep 17 00:00:00 2001 From: hueifeng <695979933@qq.com> Date: Wed, 10 Jan 2024 23:33:52 +0800 Subject: [PATCH 1/3] Release 2.7.5.1 --- common.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common.props b/common.props index 1c646287..0195c11f 100644 --- a/common.props +++ b/common.props @@ -1,6 +1,6 @@ - 2.7.5.0 + 2.7.5.1 true snupkg 1591 From 69da7773d991df40cb7940a49267b5d3a2745e0c Mon Sep 17 00:00:00 2001 From: Huei Feng <695979933@qq.com> Date: Wed, 10 Jan 2024 23:53:21 +0800 Subject: [PATCH 2/3] Update azure-pipelines.yml --- azure-pipelines.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index cbf06b79..1950ddfe 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -47,6 +47,11 @@ steps: inputs: packageType: 'sdk' version: '7.x' + +- task: UseDotNet@2 + inputs: + packageType: 'sdk' + version: '8.x' # 不再进行多框架全面测试 #- task: UseDotNet@2 From 4258d1d0c7efa49d525bad57db6c4226b52000fa Mon Sep 17 00:00:00 2001 From: Farb Date: Thu, 25 Jan 2024 23:18:06 +0800 Subject: [PATCH 3/3] =?UTF-8?q?#549-Excel=E4=B8=AD=E7=BC=BA=E5=B0=91?= =?UTF-8?q?=E5=88=97=E6=97=B6=EF=BC=8C=E5=BA=94=E8=BF=94=E5=9B=9E=E7=A9=BA?= =?UTF-8?q?=E5=92=8C=E9=94=99=E8=AF=AF=EF=BC=8C=E4=B8=8D=E5=BA=94=E8=AF=A5?= =?UTF-8?q?=E7=A9=BA=E6=8C=87=E9=92=88=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Models/ImportResult.cs | 2 ++ .../ExcelImporter_Tests.cs | 10 ++++++++++ .../Models/Import/Issue549.cs | 15 +++++++++++++++ .../TestFiles/Import/Issue549.xlsx | Bin 0 -> 10191 bytes 4 files changed, 27 insertions(+) create mode 100644 src/Magicodes.ExporterAndImporter.Tests/Models/Import/Issue549.cs create mode 100644 src/Magicodes.ExporterAndImporter.Tests/TestFiles/Import/Issue549.xlsx diff --git a/src/Magicodes.ExporterAndImporter.Core/Models/ImportResult.cs b/src/Magicodes.ExporterAndImporter.Core/Models/ImportResult.cs index 488b2d67..ad077fd3 100644 --- a/src/Magicodes.ExporterAndImporter.Core/Models/ImportResult.cs +++ b/src/Magicodes.ExporterAndImporter.Core/Models/ImportResult.cs @@ -23,6 +23,7 @@ public class ImportResultEnumer where T : class /// public ImportResultEnumer() { + Data = new List(); RowErrors = new List(); } @@ -70,6 +71,7 @@ public class ImportResult where T : class /// public ImportResult() { + Data = new List(); RowErrors = new List(); } diff --git a/src/Magicodes.ExporterAndImporter.Tests/ExcelImporter_Tests.cs b/src/Magicodes.ExporterAndImporter.Tests/ExcelImporter_Tests.cs index dc7110e7..146201bf 100644 --- a/src/Magicodes.ExporterAndImporter.Tests/ExcelImporter_Tests.cs +++ b/src/Magicodes.ExporterAndImporter.Tests/ExcelImporter_Tests.cs @@ -1210,5 +1210,15 @@ public async Task Issue377_Test() import.HasError.ShouldBeFalse(); import.Data.Count.ShouldBe(3); } + + [Fact(DisplayName = "#549-Excel中缺少列时,应返回空和错误,不应该空指针异常")] + public async Task MissingField_Test() + { + var filePath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "Import", "Issue549.xlsx"); + var import = await Importer.Import(filePath); + + import.HasError.ShouldBeTrue(); + import.Data.Count.ShouldBe(0); + } } } \ No newline at end of file diff --git a/src/Magicodes.ExporterAndImporter.Tests/Models/Import/Issue549.cs b/src/Magicodes.ExporterAndImporter.Tests/Models/Import/Issue549.cs new file mode 100644 index 00000000..4567c48a --- /dev/null +++ b/src/Magicodes.ExporterAndImporter.Tests/Models/Import/Issue549.cs @@ -0,0 +1,15 @@ +using Magicodes.ExporterAndImporter.Core; + +namespace Magicodes.IE.Tests.Models.Import; + +public class Issue549 +{ + [ImporterHeader(Name = "姓名", AutoTrim = true)] + public string Name { get; set; } + + [ImporterHeader(Name = "年龄", AutoTrim = true)] + public decimal Age { get; set; } + + [ImporterHeader(Name = "身高", AutoTrim = true)] + public decimal Height { get; set; } +} diff --git a/src/Magicodes.ExporterAndImporter.Tests/TestFiles/Import/Issue549.xlsx b/src/Magicodes.ExporterAndImporter.Tests/TestFiles/Import/Issue549.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..5580afdddef3be160bcfabdb0c5d39321a924b4e GIT binary patch literal 10191 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 literal 0 HcmV?d00001