gpt4 book ai didi

c# - `LoadFromCollection(IEnumerable, Boolean, TableStyles, BindingFlags, MemberInfo[])` 的 Epplus 示例

转载 作者:太空狗 更新时间:2023-10-29 22:25:40 29 4
gpt4 key购买 nike

在使用 Epplus ExcelPackage 时,我通常使用基本的 LoadFromCollection 函数来填充工作表,就像这样:

worksheet.Cells[1, 1].LoadFromCollection(Collection:data, PrintHeaders:true);

关于 this site ,我看到了该函数的其他重载列表,但没有具体示例。这个看起来很有趣。有人可以提供使用中的此函数重载的基本示例吗?

LoadFromCollection<T>(IEnumerable<T> Collection, Boolean PrintHeaders,
TableStyles TableStyle, BindingFlags memberFlags, MemberInfo[] Members)

我可以通过单击 API 看到“TableStyles”是一个可以像这样分配的枚举:

TableStyles TableStyle = OfficeOpenXml.Table.TableStyles.Medium1;

memberFlagsMembers 参数对我来说仍然是个谜。

最佳答案

LoadFromCollection基本上允许您使用泛型作为实现 IEnumerable<T> 的源集合该函数将使用 T从该集合中键入。所以,比如说,一个 Listthingy对象可以被它消费。这是一个演示它的线程:

EPPlus - LoadFromCollection - Text converted to number

收藏datalist

var datalist = new List<TestObject>();

传入函数

worksheet.Cells.LoadFromCollection(datalist);

至于重载,最长的一个(你展示的那个)需要 MemberInfoT对象作为最后一个参数。如果Members为空(通过其他重载)它只是做

Members = type.GetProperties(memberFlags);

哪里type

var type = typeof(T);

您可以提供自己的,但很少需要,除非您正在做一些非常具体的事情。以上memberFlags是典型的PublicInstance属性类型(同样通常不需要提供您自己的属性类型)。

如果您想对此有更好的了解,可以在此处查看源文件:

http://epplus.codeplex.com/SourceControl/latest#EPPlus/ExcelRangeBase.cs

对评论的回应

这是一个与问题相关的正确示例:

public class TestObject
{
public int Col1 { get; set; }
public int Col2 { get; set; }
public string Col3 { get; set; }
public DateTime Col4 { get; set; }
}

[TestMethod]
public void LoadFromCollection_MemberList_Test()
{
//https://stackoverflow.com/questions/32587834/epplus-loadfromcollection-text-converted-to-number/32590626#32590626

var TestObjectList = new List<TestObject>();
for (var i = 0; i < 10; i++)
TestObjectList.Add(new TestObject {Col1 = i, Col2 = i*10, Col3 = (i*10) + "E4"});

//Create a test file
var fi = new FileInfo(@"c:\temp\LoadFromCollection_MemberList_Test.xlsx");
if (fi.Exists)
fi.Delete();

using (var pck = new ExcelPackage(fi))
{
//Do NOT include Col1
var mi = typeof (TestObject)
.GetProperties()
.Where(pi => pi.Name != "Col1")
.Select(pi => (MemberInfo)pi)
.ToArray();

var worksheet = pck.Workbook.Worksheets.Add("Sheet1");
worksheet.Cells.LoadFromCollection(
TestObjectList
, true
, TableStyles.Dark1
, BindingFlags.Public| BindingFlags.Instance
, mi);

pck.Save();
}
}

注意 Col1 不在输出中:

enter image description here

关于c# - `LoadFromCollection<T>(IEnumerable<T>, Boolean, TableStyles, BindingFlags, MemberInfo[])` 的 Epplus 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37902846/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com