1、在控制器获取要导出的数据
2、通过注入 IWebHostEnvironment 服务对象来获取根目录的物理路径
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public FileResult ToExcel() { //导出数据 DataTable dt = new DataTable("Table"); //获取路径 var strPath = Path.Combine(_webhostenvironment.ContentRootPath, AppConfigurtaion.Configuration["AppSettings:upload"]); string name = DateTime.Now.ToString("yyyyMMdd") + ".xls"; byte[] data = null; using (MemoryStream ms = ComFun.Export_ToExcel(dt, strPath, colname)) { data = ms.GetBuffer(); } return File(data, "application/vnd.ms-excel", name); } |
3、引用using NPOI.SS.UserModel;using NPOI.HSSF.UserModel;
4、获取导出excel所需模板
5、创建HSSWorkbook的对象用来调用NPOI文件,如果你导入的数据时没有调用ICellStyle类的对象设置的样式话,那么出来的数据在Excel是不加任何的样式。也就是说数据过多的话,数据会挤在一排,而且超出会隐藏。所以要设置ICellStyle的属性才行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
public static MemoryStream Export_ToExcel(DataTable dt, string strpath, string[] colname) { //获取导出模板 string fileName = System.IO.Path.GetDirectoryName(strpath) + @"\resource\Excel.xls"; FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate); HSSFWorkbook hssfworkbook = new HSSFWorkbook(fs); ISheet sheet = hssfworkbook.GetSheetAt(0); ICellStyle cellStyle = hssfworkbook.CreateCellStyle(); IRow row = sheet.CreateRow(0); for (int i = 0; i < colname.Length; i++) { string name = colname[i]; ICell cell = row.CreateCell(i); //在第一行中创建单元格 cell.CellStyle = cellStyle;//单元格添加样式 cell.SetCellValue(name);//循环往第二行的单元格中添加数据 } if (dt != null && dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { IRow rows = sheet.CreateRow(i + 1); for (int j = 0; j < colname.Length; j++) { string name = colname[j]; string columnval = dt.Rows[i][name].ToString(); ICell cell = rows.CreateCell(j); //在第二行中创建单元格 cell.CellStyle = cellStyle;//单元格添加样式 cell.SetCellValue(columnval);//循环往第二行的单元格中添加数据 } } } MemoryStream file = new MemoryStream(); hssfworkbook.Write(file); return file; } |
————————————————
版权声明:本文为CSDN博主「归-途」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/w1824575989/article/details/125059544