• WeihanLi.Npoi 1.7.0 更新


    WeihanLi.Npoi 1.7.0 更新介绍

    Intro

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

    ColumnInputFormatter/ColumnOutputFormatter

    示例 Model:

    internal abstract class BaseEntity
    {
        public int PKID { get; set; }
    }
    
    internal class TestEntity : BaseEntity
    {
        public Guid SettingId { get; set; }
    
        public string SettingName { get; set; }
    
        public string DisplayName { get; set; }
        public string SettingValue { get; set; }
    
        public string CreatedBy { get; set; } = "liweihan";
    
        public DateTime CreatedTime { get; set; } = DateTime.Now;
    
        public string UpdatedBy { get; set; }
    
        public DateTime UpdatedTime { get; set; }
    
        public bool Enabled { get; set; }
    }
    
    

    示例配置:

    var setting = ExcelHelper.SettingFor<TestEntity>();
    // ExcelSetting
    setting.HasAuthor("WeihanLi")
        .HasTitle("WeihanLi.Npoi test")
        .HasDescription("WeihanLi.Npoi test")
        .HasSubject("WeihanLi.Npoi test");
    
    setting.HasSheetConfiguration(0, "SystemSettingsList", 1, true);
    
    // setting.HasFilter(0, 1).HasFreezePane(0, 1, 2, 1);
    
    setting.Property(_ => _.SettingId)
        .HasColumnIndex(0);
    
    setting.Property(_ => _.SettingName)
        .HasColumnTitle("SettingName")
        .HasColumnIndex(1);
    
    setting.Property(_ => _.DisplayName)
        .HasOutputFormatter((entity, displayName) => $"AAA_{entity.SettingName}_{displayName}")
        .HasInputFormatter((entity, originVal) => originVal.Split(new[] { '_' })[2])
        .HasColumnTitle("DisplayName")
        .HasColumnIndex(2);
    
    setting.Property(_ => _.SettingValue)
        .HasColumnTitle("SettingValue")
        .HasColumnIndex(3);
    
    setting.Property(_ => _.CreatedTime)
        .HasColumnTitle("CreatedTime")
        .HasColumnIndex(4)
        .HasColumnWidth(10)
        .HasColumnFormatter("yyyy-MM-dd HH:mm:ss");
    
    setting.Property(_ => _.CreatedBy)
        .HasColumnInputFormatter(x => x += "_test")
        .HasColumnIndex(4)
        .HasColumnTitle("CreatedBy");
    
    setting.Property(x => x.Enabled)
        .HasColumnInputFormatter(val => "启用".Equals(val))
        .HasColumnOutputFormatter(v => v ? "启用" : "禁用");
    
    setting.Property("HiddenProp")
        .HasOutputFormatter((entity, val) => $"HiddenProp_{entity.PKID}");
    
    setting.Property(_ => _.PKID).Ignored();
    setting.Property(_ => _.UpdatedBy).Ignored();
    setting.Property(_ => _.UpdatedTime).Ignored();
    

    测试代码:

    var entities = new List<TestEntity>()
    {
        new TestEntity()
        {
            PKID = 1,
            SettingId = Guid.NewGuid(),
            SettingName = "Setting1",
            SettingValue = "Value1",
            DisplayName = "ddd1"
        },
        new TestEntity()
        {
            PKID=2,
            SettingId = Guid.NewGuid(),
            SettingName = "Setting2",
            SettingValue = "Value2",
            Enabled = true
        },
    };
    var path = $@"{tempDirPath}	est.xlsx";
    entities.ToExcelFile(path);
    var entitiesT0 = ExcelHelper.ToEntityList<TestEntity>(path);
    

    导出结果:

    导入结果:

    More

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

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

    Reference

  • 相关阅读:
    自行编译spark适配CDH 6.3.2的sparksql
    大数据平台架构Lambda、Kappa、SMACK
    C++笔记Atomic原子操作/CAS(Compare and Swap)
    Java 在 IntelliJ IDEA 中提示 set the language level 9
    Java 初始化 List 的几种方法
    MariaDB 的自增字段 AUTO_INCREMENT 字段
    @Import、@ImportAutoConfiguration 到底有什么区别?
    RabbitMQ 原理解析
    Centos7如何配置MySQL远程连接
    CentOS7 安装并配置 MySQL8.0
  • 原文地址:https://www.cnblogs.com/weihanli/p/weihanli-npoi-1_7_0_Released.html
Copyright © 2020-2023  润新知