WeihanLi.Npoi 导出支持自定义列内容啦

  • 2019 年 10 月 3 日
  • 筆記

WeihanLi.Npoi ???????????

Intro

???????????????????????? issue ??????????? WeihanLi.Npoi ???????????????????????????? Excel/csv ??????? List<TEntity>????????????????????????????????? List<TEntity>??????????????????????????????????????????????????????????????????????????????formatter ???? ToString(formatter))?? WeihanLi.Npoi 1.3.7 ????????????????????????

????

????? Excel ??????? FluentAPI ????

?????????????????????????? Property ?????????????? HasColumnFormatter ???????????????

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

private static void FluentSettingsForExcel()  {      var setting = ExcelHelper.SettingFor<TestEntity>();      // ExcelSetting      setting.HasAuthor("WeihanLi")          .HasTitle("WeihanLi.Npoi test")          .HasDescription("")          .HasSubject("");        setting.HasSheetConfiguration(0, "SystemSettingsList");        setting.HasFilter(0, 1)          .HasFreezePane(0, 1, 2, 1);      setting.Property(_ => _.SettingId)          .HasColumnIndex(0);        setting.Property(_ => _.SettingName)          .HasColumnTitle("SettingName")          .HasColumnIndex(1);        setting.Property(_ => _.DisplayName)          .HasColumnFormatter((entity, displayName) => $"AAA_{entity.SettingName}_{displayName}") // ?????????          .HasColumnTitle("DisplayName")          .HasColumnIndex(2);        setting.Property(_ => _.SettingValue)          .HasColumnTitle("SettingValue")          .HasColumnIndex(3);        setting.Property(_ => _.CreatedTime)          .HasColumnTitle("CreatedTime")          .HasColumnIndex(5)          .HasColumnFormatter("yyyy-MM-dd HH:mm:ss");        setting.Property(_ => _.CreatedBy)          .HasColumnIndex(4)          .HasColumnTitle("CreatedBy");        // setting.Property(_ => _.PKID).Ignored();      setting.Property(_ => _.UpdatedBy).Ignored();      setting.Property(_ => _.UpdatedTime).Ignored();  }

???????????? ? ?????https://github.com/WeihanLi/ActivityReservation/blob/dev/ActivityReservation/Startup.cs#L243

private void FluentExcelSettings()  {      //      var settings = ExcelHelper.SettingFor<ReservationListViewModel>();      settings.HasAuthor("WeihanLi")          .HasTitle("???????")          .HasDescription("???????");      settings.Property(r => r.ReservationId).Ignored();      settings.Property(r => r.ReservationForDate)          .HasColumnTitle("??????");      settings.Property(r => r.ReservationForTime)          .HasColumnTitle("????????");      settings.Property(r => r.ReservationUnit)          .HasColumnTitle("????");      settings.Property(r => r.ReservationTime)          .HasColumnTitle("????")          .HasColumnFormatter("yyyy-MM-dd HH:mm:ss");      settings.Property(r => r.ReservationPersonName)          .HasColumnTitle("?????");      settings.Property(r => r.ReservationPersonPhone)          .HasColumnTitle("??????");      settings.Property(r => r.ReservationActivityContent)          .HasColumnTitle("??????");      settings.Property(r => r.ReservationPlaceName)          .HasColumnTitle("?????");      settings.Property(r => r.ReservationStatus)          .HasColumnTitle("????")          .HasColumnFormatter((entity, propertyVal) => propertyVal.GetDescription()); // ??????Description ??  }

???????????????

public enum ReservationStatus  {      /// <summary>      /// ???      /// </summary>      [Description("???")]      UnReviewed = 0,        /// <summary>      /// ????      /// </summary>      [Description("????")]      Reviewed = 1,        /// <summary>      /// ???      /// </summary>      [Description("?????")]      Rejected = 2,  }

???????

????

var settings = ExcelHelper.SettingsFor<TestEntity>()  settings.Property(r=>r.SettingName)      .HasColumnFormatter((entity, propertyVal)=> $"ddd_{propertyVal}");    setting.Property(_ => _.DisplayName)          .HasColumnFormatter((entity, displayName) => $"AAA_{entity.SettingName}_{displayName}") // ?????????          .HasColumnTitle("DisplayName")          .HasColumnIndex(2);

?? Property ????? HasColumnFormatter(Func<TEntity, TProperty, object> formatter) ???????? entity ???????????????????????????

FluentAPI ??????

???? Serilog ????????? FluentAPI ???? Serilog ?????????????

Serilog ??:

loggingConfig      .WriteTo.Elasticsearch(Configuration.GetConnectionString("ElasticSearch"), $"logstash-{ApplicationHelper.ApplicationName.ToLower()}")      .Enrich.FromLogContext()      .Enrich.WithRequestInfo()      ;

???????????WeihanLi.Npoi ????????????

var settings = ExcelHelper.SettingsFor<TestEntity>()  settings  .Property(r=>r.SettingName).HasColumnFormatter((entity, propertyVal)=> $"ddd_{propertyVal}")    .Property(_ => _.DisplayName).HasColumnFormatter((entity, displayName) => $"AAA_{entity.SettingName}_{displayName}") // ?????????  .Property(_ => _.DisplayName).HasColumnTitle("DisplayName")  .Property(_ => _.DisplayName).HasColumnIndex(2);

?????????????????????????????????? Serilog ?????????? FluentAPI ??

End

????????????????????????????? https://github.com/WeihanLi/WeihanLi.Npoi/issues/new

Exit mobile version