大数跨境
0
0

WeihanLi.Npoi 1.7.0 更新介绍

WeihanLi.Npoi 1.7.0 更新介绍 amazingdotnet
2020-01-04
3
导读:让 Excel 的导入导出更加灵活

WeihanLi.Npoi 1.7.0 更新介绍

Intro

昨天晚上发布了 WeihanLi.Npoi 1.7.0 版本,增加了 ColumnInputFormatter/ ColumnOutputFormatter,又进一步增强了导入导出的灵活性,来看下面的示例

ColumnInputFormatter/ColumnOutputFormatter

示例 Model:

 
  1. internal abstract class BaseEntity

  2. {

  3. public int PKID { get; set; }

  4. }


  5. internal class TestEntity : BaseEntity

  6. {

  7. public Guid SettingId { get; set; }


  8. public string SettingName { get; set; }


  9. public string DisplayName { get; set; }

  10. public string SettingValue { get; set; }


  11. public string CreatedBy { get; set; } = "liweihan";


  12. public DateTime CreatedTime { get; set; } = DateTime.Now;


  13. public string UpdatedBy { get; set; }


  14. public DateTime UpdatedTime { get; set; }


  15. public bool Enabled { get; set; }

  16. }

示例配置:

 
  1. var setting = ExcelHelper.SettingFor<TestEntity>();

  2. // ExcelSetting

  3. setting.HasAuthor("WeihanLi")

  4. .HasTitle("WeihanLi.Npoi test")

  5. .HasDescription("WeihanLi.Npoi test")

  6. .HasSubject("WeihanLi.Npoi test");


  7. setting.HasSheetConfiguration(0, "SystemSettingsList", 1, true);


  8. // setting.HasFilter(0, 1).HasFreezePane(0, 1, 2, 1);


  9. setting.Property(_ => _.SettingId)

  10. .HasColumnIndex(0);


  11. setting.Property(_ => _.SettingName)

  12. .HasColumnTitle("SettingName")

  13. .HasColumnIndex(1);


  14. setting.Property(_ => _.DisplayName)

  15. .HasOutputFormatter((entity, displayName) => $"AAA_{entity.SettingName}_{displayName}")

  16. .HasInputFormatter((entity, originVal) => originVal.Split(new[] { '_' })[2])

  17. .HasColumnTitle("DisplayName")

  18. .HasColumnIndex(2);


  19. setting.Property(_ => _.SettingValue)

  20. .HasColumnTitle("SettingValue")

  21. .HasColumnIndex(3);


  22. setting.Property(_ => _.CreatedTime)

  23. .HasColumnTitle("CreatedTime")

  24. .HasColumnIndex(4)

  25. .HasColumnWidth(10)

  26. .HasColumnFormatter("yyyy-MM-dd HH:mm:ss");


  27. setting.Property(_ => _.CreatedBy)

  28. .HasColumnInputFormatter(x => x += "_test")

  29. .HasColumnIndex(4)

  30. .HasColumnTitle("CreatedBy");


  31. setting.Property(x => x.Enabled)

  32. .HasColumnInputFormatter(val => "启用".Equals(val))

  33. .HasColumnOutputFormatter(v => v ? "启用" : "禁用");


  34. setting.Property("HiddenProp")

  35. .HasOutputFormatter((entity, val) => $"HiddenProp_{entity.PKID}");


  36. setting.Property(_ => _.PKID).Ignored();

  37. setting.Property(_ => _.UpdatedBy).Ignored();

  38. setting.Property(_ => _.UpdatedTime).Ignored();

测试代码:

 
  1. var entities = new List<TestEntity>()

  2. {

  3. new TestEntity()

  4. {

  5. PKID = 1,

  6. SettingId = Guid.NewGuid(),

  7. SettingName = "Setting1",

  8. SettingValue = "Value1",

  9. DisplayName = "ddd1"

  10. },

  11. new TestEntity()

  12. {

  13. PKID=2,

  14. SettingId = Guid.NewGuid(),

  15. SettingName = "Setting2",

  16. SettingValue = "Value2",

  17. Enabled = true

  18. },

  19. };

  20. var path = $@"{tempDirPath}\test.xlsx";

  21. entities.ToExcelFile(path);

  22. var entitiesT0 = ExcelHelper.ToEntityList<TestEntity>(path);

导出结果:

导入结果:

More

新版本发布,快来尝鲜吧~

ColumnInputFormatter 结合之前的 InputFormatter/ OutputFormatter 能够帮助你更灵活的导入导出,快来试试吧~~

Reference

  • https://github.com/WeihanLi/WeihanLi.Npoi

  • https://github.com/WeihanLi/WeihanLi.Npoi/blob/dev/samples/DotNetCoreSample/Program.cs

  • https://www.nuget.org/packages/WeihanLi.Npoi/


【声明】内容源于网络
0
0
amazingdotnet
dotnet 开发知识库,了不起的 dotnet,dotnet 奇淫怪巧
内容 539
粉丝 0
amazingdotnet dotnet 开发知识库,了不起的 dotnet,dotnet 奇淫怪巧
总阅读631
粉丝0
内容539