WeihanLi.NpoiサポートShadowProperty

サポートWeihanLi.NpoiShadowProperty

イントロ

EF内の1つのありましたShadowProperty(影のプロパティ/ shadowプロパティ)の概念は、プロパティモデルのみEFレーンにより、FluentAPIの方法により、.NETで定義されていない定義することができChange Tracker、このプロパティを操作します。

Excelをエクスポートするときに時々、私たちは列をエクスポートすることが幸いに定義されていない、我々はモデルであり、そしていくつかは、単に輸出の中でネストされたプロパティ内の属性を1つの属性値を追加することもでき、または私は単に1以上定義したいのですが、モデルは死ぬことをどこか別の場所に書くことができるこの時間は、変更に便利ではありません。

だから、WeihanLi.Npoiバージョン1.6.0からサポートされているShadowPropertyEFレーンは、ShadowProperty輸出でExcelに導入、現在では、ShadowProperty書き込み可能ではありません、読み取り専用、その後、サポートされていないタイプのデフォルト値を返しChangeTracker、変更をサポートしていません。

使用例

:(この例を使用して、簡単な例を見ては、ネチズンの問題から来ている:https://github.com/WeihanLi/WeihanLi.Npoi/issues/51

using System;
using System.Collections.Generic;
using System.IO;
using WeihanLi.Npoi;

namespace NpoiTest
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var settings = ExcelHelper.SettingFor<TestEntity>();
            settings.Property(x => x.Name)
                .HasColumnIndex(0);
            // settings.Property(x => x.UserFields)
            //     .HasOutputFormatter((entity, value) => $"{value[0].Value},{value[2].Value}")
            //     .HasColumnTitle("姓名,工号")
            //     .HasColumnIndex(1);
            settings.Property(x=>x.UserFields).Ignored();
            settings.Property("工号")
                .HasOutputFormatter((entity,val)=> $"{entity.UserFields[2].Value}")
                 ;
            settings.Property("部门")
                .HasOutputFormatter((entity,val)=> $"{entity.UserFields[1].Value}")
                 ;

            var data = new List<TestEntity>()
            {
                new TestEntity()
                {
                    Name = "xiaoming",
                    TotalScore = 100,
                    UserFields = new UserField[]
                    {
                        new UserField()
                        {
                            Name = "姓名",
                            Value = "xaioming",
                        },
                        new UserField()
                        {
                            Name = "部门",
                            Value = "1212"
                        },
                        new UserField()
                        {
                            Name = "工号",
                            Value = "121213131"
                        },
                    }
                }
            };
            data.ToExcelFile($@"{Directory.GetCurrentDirectory()}\output.xls");
            Console.WriteLine("complete.");
        }

        private class TestEntity
        {
            public string Name { get; set; }

            public UserField[] UserFields { get; set; }

            public int TotalScore { get; set; }
        }

        private class UserField
        {
            public string Fid { get; set; }
            public string Name { get; set; }
            public string Value { get; set; }
        }
    }
}

次のようにエクスポート結果は以下のとおりです。

あなたが見ることができる、我々はエクスポートする我々はコンテンツのより柔軟なカスタマイズすることができ、これにより、エクスポートしたExcelの元モデルで定義されていない2を追加しました

もっと

是非、それを体験し、フィードバックは歓迎、歓迎の問題です

参照

おすすめ

転載: www.cnblogs.com/weihanli/p/12033144.html