作者:手机用户2602905667 | 来源:互联网 | 2023-08-24 12:32
使用方法分三步
1.定义导出的实体类模板
2.将需要导入Excel的字段打上 【DisplayName】特性
3.调用方法
注意:有个巨坑,如果你用的swagger调来调去,文件都打不开,不是损坏就是各种理由不给你打开,那么恭喜你,你已入坑,文件下载,常规做法:不能使用AJAX请求,得使用浏览器输入地址,全局下载
封装函数1
优势:
1.适配所有导出模板
2.只需定义好类,打上DisplayName即可完成导入数据
使用技术:泛型,反射,NOPI
public static MemoryStream ListToExcel(List data){// 2007版本string sheetName = "sheet";bool isColumnWritten = true;IWorkbook workbook = new XSSFWorkbook();try{var sheet = workbook.CreateSheet(sheetName);ICellStyle s = workbook.CreateCellStyle();s.FillForegroundColor = HSSFColor.BlueGrey.Index;s.FillPattern = FillPattern.SolidForeground;var count = 0;var list = new List();//标题PropertyInfo[] properties = typeof(T).GetProperties();if (isColumnWritten){var row = sheet.CreateRow(0);for (int j = 0; j 0){var displayName = ((DisplayNameAttribute)attrs[0]).DisplayName;row.CreateCell(list.Count()).SetCellValue(displayName);row.GetCell(list.Count()).CellStyle = s;list.Add(item.Name);}}count = 1;}else{count = 0;}if (data.Count > 0){//数据for (var i = 0; i c.Name == p).FirstOrDefault();var value = Properties.GetValue(itemData)?.ToString();row.CreateCell(iCell).SetCellValue(value);}++count;}}else{var row = sheet.CreateRow(count);for (int iCell = 0; iCell
使用教学
1.写好类
public class A{/// /// 这个字段会导入Excel中/// [DisplayName("我是A.a")]public int a { get; set; }public int b { get; set; }public int c { get; set; }}
2.调用
net Core下的使用
var list = new List();
var ms = ExcelHelper.ListToExcel(list);
例子:
var ms = ExcelHelper.ListToExcel(result);
return File(ms, "application/vnd.ms-excel", "order.xlsx");//net Framework下的使用
var ms = Utility.ListToExcel(list);
result.COntent= new StreamContent(ms);
result.Content.Headers.COntentType= new MediaTypeHeaderValue("application/vnd.ms-excel");
result.Content.Headers.COntentDisposition= new ContentDispositionHeaderValue("attachment");
result.Content.Headers.ContentDisposition.FileName = "设备运行统计" + DateTime.Now.ToString("yyyyMMdd") + ".xlsx";
3.打开你的Excel
各位大佬,纯粹自己封装,方便下次使用,不喜勿喷哈哈哈!!!