.net core 使用NPOI導出數據為Excel


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就完成了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM