C#使用NPOI匯出Excel
阿新 • • 發佈:2018-12-10
1.新增引用 NPOI.dll NPOI.OOXML.dll 2.新增名稱空間
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.HSSF.Util;
using NPOI.XSSF.UserModel;(NPOI.OOXML.dll)
3.建立工作簿(workbook)和sheet
//建立工作簿
Workbook workbook=new HSSFWorkbook();
//建立sheet
Sheet sheet1=workbook.CreatSheet("sheet1");
4.建立行、單元格
Row irow; Cell icell; //在第一行建立行 irow = sheet.CreateRow(0); //在第一行的第一列建立單元格 icell=irow. CreateCell(0); //為單元格新增文字 icell.SetCellValue("第一個單元格");
或
Cell icell;
//在第一行的第一列建立單元格
irow = sheet.CreateRow(0). CreateCell(0);
//為單元格新增文字
icell.SetCellValue("第一個單元格");
5.設定行寬列高
//(1)設定第一列的列寬,第一個引數是列的索引(從0開始),第二個引數要*256(這個引數的單位是1/256個字元寬度) sheet1.SetColumnWidth(0, 20 * 256); //(2)設定第一行行高,Height的單位是1/20個點 sheet1.CreateRow(0).Height = 200*20; //或 sheet1.CreateRow(0).HeightInPoints = 200; //(3)設定預設行高列寬 sheet1.DefaultColumnWidth=100*256; sheet1.DefaultRowHeight=30*20;
6.設定單元格文字格式
//設定字型大小樣式style1,字型大小為20,字型為“微軟雅黑”,加粗,傾斜,顏色為藍色 Font font1 = workbook.CreateFont(); font1.FontHeightInPoints = 20; font1.FontName = "微軟雅黑"; font1.Boldweight=short.MaxValue; font.IsItalic=true; font1. Color = HSSFColor.OLIVE_GREEN.BLUE.index; CellStyle style1 = workbook.CreateCellStyle(); style1.SetFont(font1); //icell單元格的單元格樣式為style1 icell.CellStyle = style1; //設定單元格文字對齊方式 //文字水平居中 icell.CellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER; //文字左對齊 icell.CellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.LEFT; //文字右對齊 icell.CellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.RIGHT; //文字垂直居中 icell.CellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.CENTER;
7.單元格內新增圖片
string image1 = "./images/logo1.png";//圖片所在位置地址
byte[] byte1 = System.IO.File.ReadAllBytes(image1);
int imageIdx1 = workbook.AddPicture(byte1,NPOI.SS.UserModel.PictureType.PNG);
HSSFPatriarch patriarch1 = (HSSFPatriarch)sheet.CreateDrawingPatriarch();
HSSFClientAnchor anchor1 = new HSSFClientAnchor(dx1, dy1,dax2 , dy2, col1, row1, col2, row2);
//dx1、dy1: 起始單元格X,Y偏移量,圖形起始位置距起始單元格左側、上側距離
//dx2、dy2: 終止單元格X,Y偏移量,圖形起始位置距終止單元格左側、上側距離
//dx範圍:0-1023,dy範圍:0-255
//圖片位置設定:col1、row1:起始列、行序號;col2、row2:終止列、行序號
HSSFPicture pict1 = (HSSFPicture)patriarch1.CreatePicture(anchor1, imageIdx1);
pict1.Resize();//圖片為原始尺寸
8.合併單元格
//合併單元格(起始行,結束行,起始列,結束列)
sheet1.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 2));
//或
NPOI.SS.Util.CellRangeAddress region = new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 6);
sheet1.AddMergedRegion(region);
9.單元格新增邊框線
ICellStyle style = workbook.CreateCellStyle();
style.BorderBottom = NPOI.SS.UserModel.BorderStyle.THIN;
style.BorderLeft = NPOI.SS.UserModel.BorderStyle.THIN;
style.BorderRight = NPOI.SS.UserModel.BorderStyle.THIN;
style.BorderTop = NPOI.SS.UserModel.BorderStyle.THIN;
icell.CellStyle = style;
//為合併單元格新增邊框線
NPOI.SS.Util.CellRangeAddress region = new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 6);
sheet1.AddMergedRegion(region);
((HSSFSheet)sheet).SetEnclosedBorderOfRegion(region,NPOI.SS.UserModel.BorderStyle.THIN,NPOI.HSSF.Util.HSSFColor.BLACK.index);