1:安装EPPLUS的NUGET包
实现源代码:
1 using OfficeOpenXml; 2 using System; 3 using System.Collections.Generic; 4 using System.IO; 5 using System.Linq; 6 7 namespace BigBeer.Core.Excel 8 { 9 public class Excel 10 { 11 /// <summary> 12 /// 只针对2003以上版本 13 /// </summary> 14 /// <param name="data">需要存储的数据</param> 15 /// <param name="path">存储地址</param> 16 /// <param name="filename">文件名即可,后缀.xlsx</param> 17 /// <param name="worksheetname">EXCEL文档下方的命名</param> 18 public static void SaveExcel(IList<object> data,string path = null, string filename = null, string worksheetname = null) 19 { 20 int count = data[0].ToString().Split(',').Count(); 21 string sWebRootFolder = "D://Excel/"; 22 if (!string.IsNullOrEmpty(path)) sWebRootFolder = path; 23 if (!Directory.Exists(sWebRootFolder)) 24 { 25 Directory.CreateDirectory(sWebRootFolder); 26 } 27 string sFileName = $"{Guid.NewGuid()}.xlsx"; 28 if (!string.IsNullOrEmpty(filename)) sFileName = $"{filename}.xlsx"; 29 FileInfo file = new FileInfo(Path.Combine(sWebRootFolder, sFileName)); 30 string worksheetName = "sheet"; 31 if (!string.IsNullOrEmpty(worksheetname)) worksheetName = worksheetname; 32 33 using (ExcelPackage package = new ExcelPackage(file)) 34 { 35 // 添加worksheet 36 ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(worksheetName); 37 //添加头 38 for (int i = 0; i < count; i++) 39 { 40 var key = data.ToList()[i].ToString().Split(',')[i].Split('=')[0].Replace("{", "").Replace("}", ""); 41 worksheet.Cells[1, i + 1].Value = key; 42 } 43 //添加值 44 for (int i = 0; i < data.Count; i++) 45 { 46 var list = data[i]; 47 var shu = i + 2; 48 for (int t = 0; t < count; t++) 49 { 50 var c = Convert.ToChar('A' + t); 51 var value = list.ToString().Split(',')[t].Split('=')[1].Replace("{", "").Replace("}", ""); 52 worksheet.Cells[$"{c}{shu}"].Value = value; 53 } 54 } 55 package.Save(); 56 GC.Collect(); 57 } 58 } 59 } 60 }
3:使用方法:
1 var data = result.ToList<object>(); //result为查询出来的数据 2 data.SaveExcel();