| using System; | |
| using System.Collections.Generic; | |
| using System.IO; | |
| using System.Linq; | |
| using System.Reflection; | |
| using Microsoft.VisualStudio.TestTools.UnitTesting; | |
| using OfficeOpenXml; | |
| using OfficeOpenXml.Table; | |
| using Rhino.Mocks; | |
| using Rhino.Mocks.Constraints; | |
| namespace EPPlusTest | |
| { | |
| [TestClass] | |
| public class LoadFromCollectionTests | |
| { | |
| internal abstract class BaseClass | |
| { | |
| public string Id { get; set; } | |
| public string Name { get; set; } | |
| } | |
| internal class Implementation : BaseClass | |
| { | |
| public int Number { get; set; } | |
| } | |
| internal class Aclass | |
| { | |
| public string Id { get; set; } | |
| public string Name { get; set; } | |
| public int Number { get; set; } | |
| } | |
| [TestMethod] | |
| public void ShouldUseAclassProperties() | |
| { | |
| var items = new List<Aclass>() | |
| { | |
| new Aclass(){ Id = "123", Name = "Item 1", Number = 3} | |
| }; | |
| using (var pck = new ExcelPackage(new MemoryStream())) | |
| { | |
| var sheet = pck.Workbook.Worksheets.Add("sheet"); | |
| sheet.Cells["C1"].LoadFromCollection(items, true, TableStyles.Dark1); | |
| Assert.AreEqual("Id", sheet.Cells["C1"].Value); | |
| } | |
| } | |
| [TestMethod] | |
| public void ShouldUseBaseClassProperties() | |
| { | |
| var items = new List<BaseClass>() | |
| { | |
| new Implementation(){ Id = "123", Name = "Item 1", Number = 3} | |
| }; | |
| using (var pck = new ExcelPackage(new MemoryStream())) | |
| { | |
| var sheet = pck.Workbook.Worksheets.Add("sheet"); | |
| sheet.Cells["C1"].LoadFromCollection(items, true, TableStyles.Dark1); | |
| Assert.AreEqual("Id", sheet.Cells["C1"].Value); | |
| } | |
| } | |
| [TestMethod] | |
| public void ShouldUseAnonymousProperties() | |
| { | |
| var objs = new List<BaseClass>() | |
| { | |
| new Implementation(){ Id = "123", Name = "Item 1", Number = 3} | |
| }; | |
| var items = objs.Select(x => new {Id = x.Id, Name = x.Name}).ToList(); | |
| using (var pck = new ExcelPackage(new MemoryStream())) | |
| { | |
| var sheet = pck.Workbook.Worksheets.Add("sheet"); | |
| sheet.Cells["C1"].LoadFromCollection(items, true, TableStyles.Dark1); | |
| Assert.AreEqual("Id", sheet.Cells["C1"].Value); | |
| } | |
| } | |
| [TestMethod] | |
| [ExpectedException(typeof(InvalidCastException))] | |
| public void ShouldThrowInvalidCastExceptionIf() | |
| { | |
| var objs = new List<BaseClass>() | |
| { | |
| new Implementation(){ Id = "123", Name = "Item 1", Number = 3} | |
| }; | |
| var items = objs.Select(x => new { Id = x.Id, Name = x.Name }).ToList(); | |
| using (var pck = new ExcelPackage(new MemoryStream())) | |
| { | |
| var sheet = pck.Workbook.Worksheets.Add("sheet"); | |
| sheet.Cells["C1"].LoadFromCollection(items, true, TableStyles.Dark1, BindingFlags.Public | BindingFlags.Instance, typeof(string).GetMembers()); | |
| Assert.AreEqual("Id", sheet.Cells["C1"].Value); | |
| } | |
| } | |
| } | |
| } |