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

之前也有网友给提出过希望列合并或者自定义列内容的 issue 或请求,起初因为自己做 weihanli.npoi 这个扩展的最初目的是导入导出的简单化,使用这个扩展导出的 excel/csv 可以直接导入成 list tentity ,所以如果涉及的列合并的话或者自定义列的话,可能就不能直接导入生成 list tentity ,可能会有数据错误。但是最近发现可能有好多用这个扩展的只是用来导出,不会涉及到导入,所以最近考虑允许用户自定义列导出内容,之前默认是属性值的内容(后面增加了formatter 主要用于 tostring),从 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
 .hastitle
 .hasdescription
 .hassubject
 .hasfreezepane;
 setting.property
 .hascolumnindex;
 setting.property
 .hascolumntitle
 .hascolumnindex;
 setting.property
 .hascolumnformatter = $ aaa_{entity.settingname}_{displayname} ) // 多个列合并到一个列
 .hascolumntitle
 .hascolumnindex;
 setting.property
 .hascolumntitle
 .hascolumnindex;
 setting.property
 .hascolumntitle
 .hascolumnindex
 .hascolumnformatter
 .hascolumnindex
 .hascolumntitle.ignored;
 setting.property.ignored;
 setting.property.ignored;
}

活动预约导出配置方式如下 , 实例源码:https://github.com/weihanli/activityreservation/blob/dev/activityreservation/startup.cs#l243

private void fluentexcelsettings
 var setting______celhelper.settingfor reservationlistviewmodel 
 settings.hasauthor
 .hastitle
 .hasdescription.ignored;
 settings.property
 .hascolumntitle
 .hascolumntitle
 .hascolumntitle
 .hascolumntitle
 .hascolumnformatter
 .hascolumntitle
 .hascolumntitle
 .hascolumntitle
 .hascolumntitle
 .hascolumntitle
 .hascolumnformatter = propertyval.getdescription); // 这个取枚举的description 的值
}

审核状态是一个枚举,定义如下:

public enum reservationstatus
 /// summary 
 /// 待审核
 /// /summary 
 [description]
 unreviewed = 0,
 /// summary 
 /// 审核通过
 /// /summary 
 [description]
 reviewed = 1,
 /// summary 
 /// 被拒绝
 /// /summary 
 [description]
 rejected = 2,
}

导出效果如下:

var setting______celhelper.settingsfor testentity 
settings.property
 .hascolumnformatter= $ ddd_{propertyval} 
setting.property
 .hascolumnformatter = $ aaa_{entity.settingname}_{displayname} ) // 多个列合并到一个列
 .hascolumntitle
 .hascolumnindex;

针对 property 提供了一个 hascolumnformatter 的扩展,可以使用 entity 来定制输出的内容,使得用户可以自由的定制要输出的内容。

最近使用 serilog 的时候发现,现在的 fluentapi 的语法和 serilog 有一些不太一样,对比如下:

serilog 配置:

loggingconfig
 .writeto.elasticsearch, $ logstash-{applicationhelper.applicationname.tolower} )
 .enrich.fromlogcontext
 .enrich.withrequestinfo
 ;

如果改成这样方式的话,weihanli.npoi 的配置可能是下面这样的:

var setting______celhelper.settingsfor testentity 
settings
.property.hascolumnformatter= $ ddd_{propertyval} )
.property.hascolumnformatter = $ aaa_{entity.settingname}_{displayname} ) // 多个列合并到一个列
.property.hascolumntitle
.property.hascolumnindex;

个人感觉不如现在的语法清晰,所以想要看看大家的意见,如果大多数都喜欢 serilog 的写法,考虑修改一下 fluentapi 写法

最后,期待大家的反馈,如果有什么问题或其他的需求,欢迎反馈 https://github.com/weihanli/weihanli.npoi/issues/new

新闻聚焦
猜你喜欢
热门推荐
  • c#使用SoundPlayer播放wav格式音频

    c#使用SoundPlayer播放wav格式音频

    1.引用system.media名称空间下的类soundplayer soundplayer player = new soundplayer;2.方法.........

    2019-08-08 来源: 浏览:15 次

    分享
  • bin文件夹下的某个dll总是自动刷新为

    bin文件夹下的某个dll总是自动刷新为

    如上图所示,一般这种问题都是dll版本和配置文件中的dll版本对应不上才引起的,可以通过替换对应版本的dll或者修改配置文件中的版本号即可。然而我的情况是:修复...

    2019-08-08 来源: 浏览:48 次

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

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

    之前也有网友给提出过希望列合并或者自定义列内容的 issue 或请求,起初因为自己做 weihanli.npoi 这个扩展的最初目的是导入导出的简单化,使用这个.........

    2019-08-08 来源: 浏览:51 次

    分享
  • 1. mvc 树形控件tree + 表格jqgrid 显示界

    1. mvc 树形控件tree + 表格jqgrid 显示界

    [{"id":"1","text":"系统管理","value":"1","parentnodes":"0","showcheck":false,"isexpa.........

    2019-08-08 来源: 浏览:25 次

    分享
换一换
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。