其他分享
首页 > 其他分享> > 将List数据导出为Excel

将List数据导出为Excel

作者:互联网

 

 1 /// <summary>
 2         /// list导出为Excel
 3         /// </summary>
 4         /// <param name="list"></param>
 5         /// <param name="filePath"></param>
 6         public static void ListDataExport<T>(List<T> list, string filePath)
 7         {
 8             if (list.Count <= 0)
 9             {
10                 return;
11             }
12             //检查文件夹是否存在
13             string dir = Path.GetDirectoryName(filePath);
14             if (!Directory.Exists(dir))
15                 Directory.CreateDirectory(dir);
16             //用于创建文件
17             IWorkbook workbook = new XSSFWorkbook();
18             using FileStream fileStream = new FileStream(filePath, FileMode.OpenOrCreate);
19             //创建工作表
20             ISheet sheet = workbook.CreateSheet();
21             ICellStyle style = workbook.CreateCellStyle();
22             style.BorderBottom = BorderStyle.Thin;
23             style.BorderLeft = BorderStyle.Thin;
24             style.BorderRight = BorderStyle.Thin;
25             style.BorderTop = BorderStyle.Thin;
26             style.Alignment = HorizontalAlignment.Center;
27             style.VerticalAlignment = VerticalAlignment.Center;
28             int rowNo = 0;
29             IRow row0 = sheet.CreateRow(0);
30             var entity = list[0].GetType();
31             PropertyInfo[] piList = entity.GetProperties();
32             List<PropertyInfo> newlist = new();
33             foreach (PropertyInfo pi in piList)
34             {
35                 //针对特性 [Description("申请单号")]
36                 string des = ((DescriptionAttribute)Attribute.GetCustomAttribute(pi, typeof(DescriptionAttribute)))?.Description ?? null;
37                 if (des == null)
38                     continue;
39                 newlist.Add(pi);
40                 ICell cell = row0.CreateCell(rowNo);
41                 cell.SetCellValue(des);
42                 cell.CellStyle = style;
43                 rowNo++;
44             }
45             rowNo = 1;
46             foreach (var v in list)
47             {
48                 IRow row = sheet.CreateRow(rowNo);
49                 for (int i = 0; i < newlist.Count; i++)
50                 {
51                     object value = newlist[i].GetMethod.Invoke(v, null);
52                     ICell celldata = row.CreateCell(i);
53                     celldata.SetCellValue(value == null ? "" : value.ToString());
54                     celldata.CellStyle = style;
55                 }
56                 rowNo++;
57             }
58             workbook.Write(fileStream);
59             workbook.Close();
60         }

 

标签:rowNo,++,Excel,List,cell,list,导出,newlist,null
来源: https://www.cnblogs.com/heidashuaiGo/p/16352677.html