Aspose.Cells List to Excel

        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;
            }
        }
原文地址:https://www.cnblogs.com/honk/p/13410723.html