internal static MemoryStream Export<T>(List<T> query, string name)
{
SetLicense();
using (var workbook = new Workbook())
{
Worksheet worksheet;
if (workbook.Worksheets.Count > 0)
{
worksheet = workbook.Worksheets[0];
worksheet.Name = name;
}
else
{
worksheet = workbook.Worksheets.Add(name);
}
var ps = typeof(T).GetPublicProperties(System.ComponentModel.BrowsableAttribute.No);
if (ps!=null)
{
// For first row name
for (int j = 0; j < ps.Count; j++)
{
worksheet.Cells[0,j].PutValue(ps[j].GetDisplayName());
}
// Log every cell in the list for one by one
for (int i = 0; i < query.Count; i++)
{
for (int j = 0; j < ps.Count; j++)
{
worksheet.Cells[i + 1,j].PutValue(ps[j].GetValue(query[i]));
}
}
}
worksheet.AutoFitColumns();
MemoryStream memoryStream = new MemoryStream();
workbook.Save(memoryStream, SaveFormat.Xlsx);
memoryStream.Seek(0, SeekOrigin.Begin);
return memoryStream;
}
}