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