NPOI
Excel
C# 使用NPOI匯出Excel文件
2019/12/27 19:29:01
1
33549
概述
NPOI 是一個能夠快速讀取與產生Excel檔案的第三方套件,幫助程式開發人員在無安裝Microsoft Office的環境下讀寫Office 97-2003的文件,支援的檔案格式包括xls, doc, ppt等,對於需要產生Excel報表非常好用。
安裝
工具列→專案→管理NuGet套件
瀏覽→搜尋輸入NPOI→NPOI→安裝
範例
NPOI可透過兩種方式匯出Excel,一是使用Template,將Excel格式拉好存檔,透過NPOI讀取格式後,再將資料填入並另存新檔,本文範例則會將從無到有產生Excel檔案。
完整程式碼如下:
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using System.IO;
//取得資料
var result = this.studentService.GetStudentDataList(request).ToList();
//建立Excel
HSSFWorkbook hssfworkbook = new HSSFWorkbook(); //建立活頁簿
ISheet sheet = hssfworkbook.CreateSheet("sheet"); //建立sheet
//設定樣式
ICellStyle headerStyle = hssfworkbook.CreateCellStyle();
IFont headerfont = hssfworkbook.CreateFont();
headerStyle.Alignment = HorizontalAlignment.Center; //水平置中
headerStyle.VerticalAlignment = VerticalAlignment.Center; //垂直置中
headerfont.FontName = "微軟正黑體";
headerfont.FontHeightInPoints = 20;
headerfont.Boldweight =(short)FontBoldWeight.Bold;
headerStyle.SetFont(headerfont);
//新增標題列
sheet.CreateRow(0); //需先用CreateRow建立,才可通过GetRow取得該欄位
sheet.AddMergedRegion(new CellRangeAddress(0, 1, 0, 2)); //合併1~2列及A~C欄儲存格
sheet.GetRow(0).CreateCell(0).SetCellValue("昕力大學");
sheet.GetRow(0).GetCell(0).CellStyle = headerStyle; //套用樣式
sheet.CreateRow(2).CreateCell(0).SetCellValue("學生編號");
sheet.GetRow(2).CreateCell(1).SetCellValue("學生姓名");
sheet.GetRow(2).CreateCell(2).SetCellValue("就讀科系");
//填入資料
int rowIndex = 3;
for (int row = 0; row < result.Count(); row++)
{
sheet.CreateRow(rowIndex).CreateCell(0).SetCellValue(result[row].StudentNo);
sheet.GetRow(rowIndex).CreateCell(1).SetCellValue(result[row].StudentName);
sheet.GetRow(rowIndex).CreateCell(2).SetCellValue(result[row].Department);
rowIndex++;
}
var excelDatas = new MemoryStream();
hssfworkbook.Write(excelDatas);
return File(excelDatas.ToArray(), "application/vnd.ms-excel", string.Format($"學生資料.xls"));
匯出結果如下: