ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

将List数据导出为Excel

2022-06-07 17:32:10  阅读:255  来源: 互联网

标签:rowNo ++ Excel List cell list 导出 newlist null


 

 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有