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

WeihanLi.Npoi 1.7.0 更新的更多相关文章

  1. WeihanLi.Npoi 1.10.0 更新日志

    WeihanLi.Npoi 1.10.0 更新日志 Intro 上周有个网友希望能够导入Excel时提供一个 EndRowIndex 来自己控制结束行和根据字段过滤的,周末找时间做了一下这个 feat ...

  2. WeihanLi.Npoi 1.13.0 更新日志

    WeihanLi.Npoi 1.13.0 更新日志 Intro 在 Github 上收到 Issue 收到网友反馈希望支持自动分 Sheet 导出,有兴趣的可以参考 Issue https://git ...

  3. WeihanLi.Npoi 1.11.0/1.12.0 Release Notes

    WeihanLi.Npoi 1.11.0/1.12.0 Release Notes Intro 最近 NPOI 扩展新更新了两个版本,感谢 shaka chow 的帮忙和支持,这两个 Feature ...

  4. WeihanLi.Npoi 1.14.0 Release Notes

    WeihanLi.Npoi 1.14.0 Release Notes Intro 周末更新了一下项目,开始使用可空引用类型,并且移除了 net45 的支持,仅支持 netstandard2.0 Cha ...

  5. WeihanLi.Npoi 1.16.0 Release Notes

    WeihanLi.Npoi 1.16.0 Release Notes Intro 最近有网友咨询如何设置单元格样式,在之前的版本中是不支持的,之前主要考虑的是数据,对于导出的样式并没有支持,这个 is ...

  6. WeihanLi.Npoi 近期更新

    WeihanLi.Npoi 近期更新 Intro 最近对我的 NPOI 扩展做了一些改变,一方面提高性能,一方面修复bug,增加一些新的功能来让它更加好用,前几天发布了 1.5.0 版本,下面来介绍一 ...

  7. WeihanLi.Npoi

    WeihanLi.Npoi Intro Npoi 扩展,适用于.netframework4.5及以上和netstandard2.0, .netframework基于NPOI, .netstandard ...

  8. 使用 WeihanLi.Npoi 操作 CSV

    使用 WeihanLi.Npoi 操作 CSV Intro 最近发现 csv 文件在很多情况下都在使用,而且经过大致了解,csv 格式简单,相比 excel 文件要小很多,读取也很是方便,而且也很通用 ...

  9. ASP.NET MVC 4.0 中使用NPOI 2.2.0 按模板生成Excel报表

    使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/ ...

随机推荐

  1. Pytorch的默认初始化分布 nn.Embedding.weight初始化分布

    一.nn.Embedding.weight初始化分布 nn.Embedding.weight随机初始化方式是标准正态分布  ,即均值$\mu=0$,方差$\sigma=1$的正态分布. 论据1——查看 ...

  2. python selenium处理JS只读(12306)

    12306为例 js = "document.getElementById('train_date').removeAttribute('readonly');" driver.e ...

  3. Duplicate keys detected: '0'. This may cause an update error.

    在运行vue项目的时候报了:[Vue warn]: Duplicate keys detected: ‘0’. This may cause an update error(错误,检测到重复的key值 ...

  4. laravel 使用create 报错 MassAssignmentException

    在使用:   模型:create时报错, Add [name] to fillable property to allow mass assignment on [App\AdminUser].,因为 ...

  5. HTML5的5个的新特性

    特性1:正则表达式 无须使用服务端的检测,使用浏览器的本地功能,就可以帮助你判断邮箱的格式,URL,电话,防止用户输入错误的信息,通过H5的pattern属性,很方便的整合这个功能. <inpu ...

  6. 通过git从码云克隆项目到本地

    1.下载安装Git,傻瓜式下一步下一步即可... 2.配置Git: 2.1.选择你要clone到本地的路径:右键--->$ Git Bash Here,弹出Linux命令窗口:$ cd ~直接回 ...

  7. 【CSS3】3D立方体动画

    关于CSS3的3D立方体动画 知识点: 1.每个元素有独立的坐标系 2.坐标系随当前元素的改变而发生改变 3.立方体由静态transform参数构成 4.通过给容器添加动画使立方体运动 效果图: &l ...

  8. mybatis 一对多查询 集合创建空对象的问题

    在做 mybatis 一对多查询的时候, resultMap 里面用到了集合标签 collection ,后来发现 当该条数据没有子集的时候, collection 会自动创建一个属性都是null的对 ...

  9. servicemix-3.2.1 内置的服务引擎和绑定组件

    服务引擎: servicemix-bean servicemix-camel servicemix-cxf-se servicemix-drools servicemix-eip servicemix ...

  10. 2018-8-10-使用-RetroShare-分享资源

    title author date CreateTime categories 使用 RetroShare 分享资源 lindexi 2018-08-10 19:16:51 +0800 2018-02 ...