1. 程式人生 > >C#使用NPOI匯出Excel

C#使用NPOI匯出Excel

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);