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 = [email protected]"{tempDirPath}\test.xlsx";
entities.ToExcelFile(path);
var entitiesT0 = ExcelHelper.ToEntityList<TestEntity>(path);

导出结果:

导入结果:

More

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

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

Reference

原文地址:https://www.cnblogs.com/weihanli/p/weihanli-npoi-1_7_0_Released.html

时间: 2024-10-31 16:32:29

WeihanLi.Npoi 1.7.0 更新的相关文章

WeihanLi.Npoi 近期更新

WeihanLi.Npoi 近期更新 Intro 最近对我的 NPOI 扩展做了一些改变,一方面提高性能,一方面修复bug,增加一些新的功能来让它更加好用,前几天发布了 1.5.0 版本,下面来介绍一下最近的更新 默认导入/导出格式变更 在 1.5.0 版本中,将默认导入/导出的excel格式从 xlsx 改为 xls 以获得更好的性能,需要注意的是 xls 格式的 excel 文件一个 sheet 最多 65535 行数据,超过的话会报错. xls 可以有更好的性能和更优的内存分配,xlsx

使用 WeihanLi.Npoi 操作 CSV

使用 WeihanLi.Npoi 操作 CSV Intro 最近发现 csv 文件在很多情况下都在使用,而且经过大致了解,csv 格式简单,相比 excel 文件要小很多,读取也很是方便,而且也很通用,微软的 ml.net 的示例项目 用来训练模型的数据也是使用的 csv 来保存的,最近又发现使用 jmeter 来测试网站的性能,也可以用 csv 来参数化请求,csv 文件操作的重要性由此可见. 此前做了一个 NPOI 的扩展 WeihanLi.Npoi,支持.net45 以及 .netstan

asp.net core 3.0 更新简记

原文:asp.net core 3.0 更新简记 asp.net core 3.0 更新简记 Intro# 最近把活动室预约项目从 asp.net core 2.2 更新到了 asp.net core 3.0,记录一下,升级踩过的坑以及经验总结,包括但不限于 TargetFramework (netcoreapp2.2 需要更新为 netcoreapp3.0) Dependency Host/Environment Mvc Routing Swagger Dockerfile EF(不推荐更新)

WeihanLi.Npoi 支持 ShadowProperty 了

WeihanLi.Npoi 支持 ShadowProperty 了 Intro 在 EF 里有个 ShadowProperty (阴影属性/影子属性)的概念,你可以通过 FluentAPI 的方式来定义一个不在 .NET model 里定义的属性,只能通过 EF 里的 Change Tracker 来操作这种属性. 在导出 Excel 的时候有时候我们可能希望导出的列并不是都定义好在我们的 model 中的,有的可能只是想增加一列导出某个属性中的嵌套属性之中的某一个属性值,或者我就是单纯的想多定

WeihanLi.Npoi 根据模板导出Excel

WeihanLi.Npoi 根据模板导出Excel Intro 原来的导出方式比较适用于比较简单的导出,每一条数据在一行,数据列虽然自定义程度比较高,如果要一条数据对应多行就做不到了,于是就想支持根据模板导出,在 1.8.0 版本中引入了根据模板导出的功能 使用示例 示例模板 模板规划的可以有三种数据: Global:一个是导出的时候可以指定一些参数,作为 Global 参数,默认参数格式使用: $(Global:PropName) 的格式 Header:配置的对应属性的显示名称,默认是属性名称

修改更新源sources.list,提高软件下载安装速度(提供Kali 2.0 更新源)

1.切换到root用户(如果已经是root用户就直接看第二步) [email protected]:~$ su 密码: 2.用文本编辑器打开sources.list,手动添加下面的更新源 [email protected]:/home/dnt# leafpad /etc/apt/sources.list 3.添加完毕后执行下面的更新指令,进行系统或者工具的更新 [email protected]:/home/dnt# apt-get update && apt-get upgrade &a

全新的闪念胶囊,OneStep 1.5 以及 BigBang 2.0 更新后的 Smartisan OS 3.6 体验

本文标签: OneStep1.5 BigBang2.0 SmartisanOS3.6 闪念胶囊 随着坚果手机的发布,Smartisan OS 也得到了例行更新.包括了全新的闪念胶囊,OneStep 1.5以及 BigBang 2.0更新.趁着坚果还热,来了解老罗在发布会上用一个小时讲解的「领先三步」使用体验如何. 闪念胶囊:屏幕边缘的便利贴 闪念胶囊的使用门槛就像发送微信语音一样低:按住说话,文字输入,或者使用 OneStep拖动新建胶囊.从屏幕右边划出即可查看这些胶囊,这些操作都在全局有效.

Linux Integration Services 4.0 更新发布

关于Linux的学习,请参考书籍<linux就该这么学> Linux Integration Services(LIS,Linux 集成服务)是为了在 Hyper-V 中运行 Linux guest VM获得最好的使用体验的服务,目前微软已经正式发布了 Linux Integration Services (LIS) 4.0,其版本号为 4.0.11.Linux Integration Services 4.0 更新改进了对 Red Hat Enterprise Linux 6.7.CentO

kali 2.0 更新源

Kali 2.0 更新源 root#mv /etc/apt/sources.list /etc/apt/sources.list.bk#备份自带源 root#vim /etc/apt/sources.list #中科大kali源 deb http://mirrors.ustc.edu.cn/kali sana main non-free contrib deb http://mirrors.ustc.edu.cn/kali-security/ sana/updates main contrib