1、項目的依賴項中添加NPOI的包
2、在需要使用的地方引用NPOI並使用NPOI將數據填入excel:
using NPOI.XSSF.UserModel; // XSSF用於創建office2007及以后使用的格式,HSSF則是這之前的格式 using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System.IO; // 創建工作簿 var workbook = new HSSFWorkbook(); // 創建表 var sheet = workbook.CreateSheet("設備表"); // CreateFont:創建字體樣式 var headFont = workbook.CreateFont(); headFont.IsBold = true; // CreateCellStyle:創建單元格樣式 var headStyle = workbook.CreateCellStyle(); headStyle.Alignment = HorizontalAlignment.Center; headStyle.SetFont(headFont); // CreateRow:操作指定表的指定行。 var rowIndex = 0; var row = sheet.CreateRow(rowIndex); // CreateCell:為指定行添加指定列(單元格)。 var cell = row.CreateCell(0); // 為單元格賦予值和樣式。此處為表頭 cell.SetCellValue("姓名"); cell.CellStyle = headStyle; cell = row.CreateCell(1); cell.SetCellValue("年齡"); cell.CellStyle = headStyle; // 實際數據部分的單元格樣式 var cellStyle = workbook.CreateCellStyle(); cellStyle.BorderRight = BorderStyle.Thin; // 循環輸入內容數據 // (此處模擬有一個名為list的集合存儲了數個有姓名和年齡的T對象) foreach(T t in list) { row = sheet.CreateRow(++rowIndex); cell = row.CreateCell(0); cell.SetCellValue(t.Name); cell.CellStyle = cellStyle; cell = row.CreateCell(1); cell.SetCellValue(t.Age); cell.CellStyle = cellStyle; } // bs用於存儲文件數據的字節數組,一般給前端下載的文件都需要用這種方式傳遞 byte[] bs; // 導出內存流並通過內存流讀取為byte[] using (MemoryStream ms = new MemoryStream()) { workbook.Write(ms); bs = ms.GetBuffer(); } // 返回給前端下載:File(存儲文件數據的字節數組, 對應文件content-type, 文件名) return File(bs, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "excel2007文件.xlsx");
根據實際調整表頭和內容數據,然后執行代碼即可返回一個Excel文件。
3、前端接收這個文件只需要用瀏覽器打開對應地址即可:
// 假設調用上面那段代碼的方法的地址是"/api/Home/Export" location.href="/api/Home/Export";
隨后瀏覽器就會下載返回的文件,導出Excel就完成了。