Browse Source

feat(module: excel): The export can be of Nullable Enum type (#398)

hotfix/#408
HueiFeng 4 years ago
parent
commit
86d01d42ce
  1. 6
      Magicodes.IE.slnf
  2. 5
      src/Magicodes.ExporterAndImporter.Excel/Utility/ExportHelper.cs
  3. 2
      src/Magicodes.ExporterAndImporter.Tests/Excel_Tests.cs
  4. 2
      src/Magicodes.ExporterAndImporter.Tests/Magicodes.IE.Tests.csproj
  5. 2
      src/Magicodes.ExporterAndImporter.Tests/Models/Export/ExportTestDataWithAttrs.cs
  6. 17
      src/Magicodes.ExporterAndImporter.Tests/Models/Export/Issue195.cs

6
Magicodes.IE.slnf

@ -2,9 +2,9 @@
"solution": {
"path": "Magicodes.IE.sln",
"projects": [
"src\\Magicodes.ExporterAndImporter.Excel\\Magicodes.IE.Excel.csproj",
"src\\Magicodes.ExporterAndImporter.Core\\Magicodes.IE.Core.csproj",
"src\\Magicodes.ExporterAndImporter.Tests\\Magicodes.IE.Tests.csproj",
"src\\Magicodes.ExporterAndImporter.Core\\Magicodes.IE.Core.csproj",
"src\\Magicodes.ExporterAndImporter.Excel\\Magicodes.IE.Excel.csproj",
"src\\Magicodes.ExporterAndImporter.Tests\\Magicodes.IE.Tests.csproj"
]
}
}

5
src/Magicodes.ExporterAndImporter.Excel/Utility/ExportHelper.cs

@ -640,7 +640,8 @@ namespace Magicodes.ExporterAndImporter.Excel.Utility
dynamic obj = new ExpandoObject();
foreach (var propertyInfo in properties)
{
if (propertyInfo.PropertyType.IsEnum)
if (propertyInfo.PropertyType.IsEnum||
(propertyInfo.PropertyType.GetNullableUnderlyingType()?.IsEnum).HasValue)
{
//var col = ExporterHeaderList.First(a => a.PropertyName == propertyInfo.Name);
//var value = type.GetProperty(propertyInfo.Name)?.GetValue(dataItem)?.ToString();
@ -660,7 +661,7 @@ namespace Magicodes.ExporterAndImporter.Excel.Utility
propertyInfo.PropertyType.GetNullableUnderlyingType().IsEnum)
{
{
var value = type.GetProperty(propertyInfo.Name)?.GetValue(dataItem).GetHashCode();
var value = type.GetProperty(propertyInfo.Name)?.GetValue(dataItem)?.GetHashCode();
{
var col = ExporterHeaderList.First(a => a.PropertyName == propertyInfo.Name);

2
src/Magicodes.ExporterAndImporter.Tests/Excel_Tests.cs

@ -67,6 +67,8 @@ namespace Magicodes.ExporterAndImporter.Tests
var data = GenFu.GenFu.ListOf<Issue195>(100);
data[0].Sex = Sex.boy;
data[1].Sex = Sex.girl;
data[0].NullableSex = NullableSex.boy;
data[1].NullableSex = NullableSex.girl;
var result = await exporter.Export(filePath, data);
result.ShouldNotBeNull();

2
src/Magicodes.ExporterAndImporter.Tests/Magicodes.IE.Tests.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFrameworks>net6.0</TargetFrameworks>
<IsPackable>false</IsPackable>
<PackageProjectUrl>https://github.com/dotnetcore/Magicodes.IE</PackageProjectUrl>
</PropertyGroup>

2
src/Magicodes.ExporterAndImporter.Tests/Models/Export/ExportTestDataWithAttrs.cs

@ -17,6 +17,7 @@ using Magicodes.ExporterAndImporter.Core.Models;
using Magicodes.ExporterAndImporter.Excel;
using OfficeOpenXml.Table;
using System;
using System.ComponentModel;
namespace Magicodes.ExporterAndImporter.Tests.Models.Export
{
@ -59,6 +60,7 @@ namespace Magicodes.ExporterAndImporter.Tests.Models.Export
[ExporterHeader(DisplayName = "日期2", Format = "yyyy-MM-dd HH:mm:ss")]
public DateTime? Time2 { get; set; }
[Description]
[ExporterHeader(Width = 100)]
public DateTime Time3 { get; set; }

17
src/Magicodes.ExporterAndImporter.Tests/Models/Export/Issue195.cs

@ -11,6 +11,8 @@ namespace Magicodes.ExporterAndImporter.Tests.Models.Export
[ExporterHeader(DisplayName = "性别")]
public Sex Sex { get; set; }
public NullableSex? NullableSex { get; set; }
}
enum Sex : byte
{
@ -28,5 +30,20 @@ namespace Magicodes.ExporterAndImporter.Tests.Models.Export
girl = 2
}
enum NullableSex
{
/// <summary>
/// 男
/// </summary>
[Display(Name = "男")]
[Description("男")]
boy = 1,
/// <summary>
/// 女
/// </summary>
[Display(Name = "女")]
[Description("女")]
girl = 2
}
}

Loading…
Cancel
Save