/// <summary> ?????????/// 导出Excel ?????????/// </summary> ?????????/// <param name="lists"></param> ?????????/// <param name="head">英文中文列名对照</param> ?????????/// <param name="workbookFile">保存路径</param> ?????????public static void getExcel<T>(List<T> lists, Dictionary<string,string> head, string workbookFile) ???????{ ???????????try ???????????{ ???????????????XSSFWorkbook workbook = new XSSFWorkbook(); ???????????????using (MemoryStream ms = new MemoryStream()) ???????????????{ ???????????????????var sheet = workbook.CreateSheet(); ???????????????????var headerRow = sheet.CreateRow(0); ???????????????????bool h = false; ???????????????????int j = 1; ???????????????????Type type = typeof(T); ???????????????????PropertyInfo[] properties = type.GetProperties(); ???????????????????foreach (T item in lists) ???????????????????{ ???????????????????????var dataRow = sheet.CreateRow(j); ???????????????????????int i = 0; ???????????????????????foreach (PropertyInfo column in properties) ???????????????????????{ ???????????????????????????if (!h) ???????????????????????????{ ???????????????????????????????if (head.Keys.Contains(column.Name)) ???????????????????????????????{ ???????????????????????????????????headerRow.CreateCell(i).SetCellValue(head[column.Name] == null ? column.Name : head[column.Name].ToString()); ???????????????????????????????????dataRow.CreateCell(i).SetCellValue(column.GetValue(item, null) == null ? "" : column.GetValue(item, null).ToString()); ???????????????????????????????} ???????????????????????????????else ???????????????????????????????{ ???????????????????????????????????i -= 1; ???????????????????????????????} ???????????????????????????} ???????????????????????????else ???????????????????????????{ ???????????????????????????????if (head.Keys.Contains(column.Name)) ???????????????????????????????{ ???????????????????????????????????dataRow.CreateCell(i).SetCellValue(column.GetValue(item, null) == null ? "" : column.GetValue(item, null).ToString()); ???????????????????????????????} ???????????????????????????????else ???????????????????????????????{ ???????????????????????????????????i -= 1; ???????????????????????????????} ???????????????????????????} ???????????????????????????i++; ???????????????????????} ???????????????????????h = true; ???????????????????????j++; ???????????????????} ??????????????????????????????????????workbook.Write(ms); ???????????????????using (FileStream fs = new FileStream(workbookFile, FileMode.Create, FileAccess.Write)) ???????????????????{ ???????????????????????byte[] data = ms.ToArray(); ???????????????????????fs.Write(data, 0, data.Length); ???????????????????????fs.Flush(); ???????????????????} ???????????????????sheet = null; ???????????????????headerRow = null; ???????????????????workbook = null; ???????????????} ???????????} ???????????catch (Exception ee) ???????????{ ???????????????string see = ee.Message; ???????????} ???????}
.net core 基于NPOI 的excel导出类,支持自定义导出哪些字段
原文地址:http://www.cnblogs.com/hzzxq/p/7531790.html