通过泛型设计的一个类用于不同自定义类的泛型集合导出到Excel通用方法用到EEPULUS第三方类库注意版本不要太高(麻烦),我用4.5.3.3

using OfficeOpenXml;
using System.Collections.Generic;
using System.IO;
using System.Reflection;

namespace Common
{
    public class ExcelExportByGeneric<T>//泛型类 参数是类型T 不指定 实例化时指定 影响下面的List<T>
    {
        public void ExportToExcel(List<T> list, string filePath)//引用泛型
        {
            //ExcelPackage.LicenseContext = LicenseContext.NonCommercial; //高版本需要 设置许可证上下文,如果是商业用途请更换为 LicenseContext.Commercial
            using (var package = new ExcelPackage()) // 创建一个ExcelPackage实例
            {
                var worksheet = package.Workbook.Worksheets.Add("Data"); // 添加一个工作表
                int row = 1; // 用于追踪行号

                // 获取所有公共属性,这将作为列标题***消化不好这条反射就记住它吧, 但有时间还是好好看看反射的内容
                PropertyInfo[] props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
                int col = 1; // 用于追踪列号
                foreach (PropertyInfo prop in props)
                {
                    worksheet.Cells[row, col].Value = prop.Name; // 设置列标题
                    col++;
                }
                row++; // 移动到下一行,准备写入数据

                // 写入数据行
                foreach (T t in list)
                {
                    col = 1; // 重置列号到第一列
                    foreach (PropertyInfo prop in props)
                    {
                        var value = prop.GetValue(t, null); // 获取属性的值
                        worksheet.Cells[row, col].Value = value; // 设置单元格的值
                        col++;
                    }
                    row++; // 移动到下一行,准备写入下一行数据
                }

                // 自适应列宽以更好地显示内容
                worksheet.Cells.AutoFitColumns();

                // 保存Excel文件到指定路径
                FileInfo fileInfo = new FileInfo(filePath);
                package.SaveAs(fileInfo); // 保存文件
            }
        }
    }
}

 调用

 UserInfoBLL bll = new UserInfoBLL();
            List<UserInfo> list = bll.GetUserInfoList();
            //--始
            string fileName=Guid.NewGuid().ToString()+".xlsx";
            string filePath = @".\Excel\" + fileName;
            ExcelExporter<UserInfo> ee = new ExcelExporter<UserInfo>();
            ee.ExportToExcel(list, filePath);

 

posted @ 2026-06-12 06:09  techNote  阅读(5)  评论(0)    收藏  举报