日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WeihanLi.Npoi 支持 ShadowProperty 了

發布時間:2023/12/4 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WeihanLi.Npoi 支持 ShadowProperty 了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

WeihanLi.Npoi 支持?ShadowProperty?了

Intro

在 EF 里有個 ShadowProperty (陰影屬性/影子屬性)的概念,你可以通過 FluentAPI 的方式來定義一個不在 .NET model 里定義的屬性,只能通過 EF 里的 ChangeTracker 來操作這種屬性。

在導出 Excel 的時候,可能希望導出的列并不是都定義好在我們的 model 中的,有的可能只是想增加一列導出某個屬性中的嵌套屬性之中的某一個屬性值,或者我就是單純的想多定義一列,而這個時候可能 model 是別的地方寫死的,不方便改。

于是 WeihanLi.Npoi 從 1.6.0 版本開始支持 ShadowProperty ,將 EF 里的 ShadowProperty 引入到 excel 導出里,目前來說 ShadowProperty 是不可寫的,讀取的話也只是返回一個類型的默認值,不支持 ChangeTracker,不支持改。

使用示例

來看一個簡單使用示例:(示例來源于網友提出的這個issue: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 增加在原本的 Model 里沒有定義的兩列,借助于此,我們可以更靈活的定制要導出的內容

More

快來體驗吧,歡迎反饋,歡迎 issue

Reference

  • https://docs.microsoft.com/en-us/ef/core/modeling/shadow-properties

  • https://docs.microsoft.com/zh-cn/ef/core/modeling/shadow-properties

  • https://github.com/WeihanLi/WeihanLi.Npoi/issues/51

  • https://github.com/WeihanLi/WeihanLi.Npoi

總結

以上是生活随笔為你收集整理的WeihanLi.Npoi 支持 ShadowProperty 了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。