LoadFromCollection
基本上允许您使用泛型作为实现的源集合IEnumerable<T>
该函数将使用T
从该集合中输入。所以,比如说,一个List
of thingy
对象可以被它消耗。这是一个演示它的线程:
EPPlus - LoadFromCollection - 文本转换为数字
收藏品datalist
is
var datalist = new List<TestObject>();
被传递到函数中
worksheet.Cells.LoadFromCollection(datalist);
至于重载,最长的(你显示的)占据了MemberInfo
的T
对象作为最后一个参数。如果Members
是 null (通过其他重载)它只是
Members = type.GetProperties(memberFlags);
where type
is
var type = typeof(T);
您可以提供自己的,但很少有必要,除非您正在做一些非常具体的事情。以上memberFlags
是典型的Public
and Instance
财产类型(同样通常不需要提供您自己的)。
如果您想更好地了解这一点,您可以在此处查看源代码:
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](https://i.stack.imgur.com/We6U9.png)