NPOI使用说明---合并单元格

示例五、合并单元格
为了实现这一功能,NPOI引入了新的概念,即Region,因为合并单元格,其实就是设定一个区域。下面说一下Region类的参数,Region总共有4个参数,如下所示

Region的参数

说明

FirstRow

区域中第一个单元格的行号

FirstColumn

区域中第一个单元格的列号

LastRow

区域中最后一个单元格的行号

LastColumn

区域中最后一个单元格的列号

由于单元格的合并都是在表的基础上建立的,所以我们得先建Sheet:
HSSFWorkbook  hssfworkbook =new  HSSFWorkbook();
HSSFSheet sheet = hssfworkbook.CreateSheet("newsheet");
场景一、标题行的合并
这种场景是最常见的,比如说我们要建立一张销售情况表,英文叫Sales Report
我们先设置居中和字体样式,这里我们采用20号字体,代码如下:
HSSFRow row =sheet.CreateRow(0);
HSSFCell cell= row.CreateCell(0);
cell.SetCellValue("Sales Report");
HSSFCellStyle style = hssfworkbook.CreateCellStyle();
style.Alignment= HSSFCellStyle.ALIGN_CENTER;
HSSFFont font= hssfworkbook.CreateFont();
font.FontHeight= 20*20;
style.SetFont(font);
cell.CellStyle= style;
要产生图中的效果,即把A1:F1这6个单元格合并,然后添加合并区域:
sheet.AddMergedRegion(new Region(0, 0, 0,5));
场景二、多行合并
看完场景一,你可不要认为多行合并就需要一行一行做,其实也只需要一行代码,比如说我们要把C3:E5合并为一个单元格,那么就可以用下面的代码:
sheet.AddMergedRegion(new Region(2, 2, 4,4));
提示即使你没有用CreateRow和CreateCell创建过行或单元格,也完全可以直接创建区域然后把这一区域合并,Excel的区域合并信息是单独存储的,和RowRecord、ColumnInfoRecord不存在直接关系。
场景三、单元格对齐
首先我们用代码创建必要的单元格,代码如下:
HSSFWorkbookhssfworkbook =new HSSFWorkbook();
HSSFSheetsheet1 = hssfworkbook.CreateSheet("Sheet1");
HSSFRow row =sheet1.CreateRow(0);
row.CreateCell(0).SetCellValue("Test");
这里我们假设在A0单元格中加入了文本Test。
请注意接下来我们要做的所有操作都是在CellStyle的基础上完成的,所以我们创建一个HSSFCellStyle:
HSSFCellStylestyle=hssfworkbook.CreateCellStyle();
水平对齐
这里用的是HSSFCellStyle.Alignment,默认值自然是常规,即HSSFCellStyle.ALIGN_GENERAL。
如果是左侧对齐就是
style.Alignment= HSSFCellStyle.ALIGN_LEFT;
如果是居中对齐就是
style.Alignment= HSSFCellStyle.ALIGN_CENTER;
如果是右侧对齐就是
style.Alignment= HSSFCellStyle.ALIGN_RIGHT;
如果是跨列居中就是
style.Alignment= HSSFCellStyle.ALIGN_CENTER_SELECTION;
如果是两端对齐就是
style.Alignment= HSSFCellStyle.ALIGN_JUSTIFY;
如果是填充就是
style.Alignment= HSSFCellStyle.ALIGN_FILL;
注意:以上选项仅当有足够的宽度时才能产生效果,不设置宽度恐怕看不出区别。
垂直对齐
这里用的是HSSFCellStyle.VerticalAlignment,默认值为居中,即HSSFCellStyle.VERTICAL_CENTER
如果是靠上就是
style.VerticalAlignment=HSSFCellStyle.VERTICAL_TOP
如果是居中就是
style.VerticalAlignment=HSSFCellStyle.VERTICAL_CENTER
如果是靠下就是
style.VerticalAlignment=HSSFCellStyle.VERTICAL_BOTTOM
如果是两端对齐就是
style.VerticalAlignment=HSSFCellStyle.VERTICAL_JUSTIFY
注意:以上选项仅当有足够的高度时才能产生效果,不设置高度恐怕看不出区别。
自动换行
自动换行翻译成英文其实就是Wrap的意思,所以这里我们应该用WrapText属性,这是一个布尔属性
style.WrapText=true;
文本缩进
这是一个不太引人注意的选项,所以这里给张图出来,让大家知道是什么,缩进说白了就是文本前面的空白,我们同样可以用属性来设置,这个属性叫做Indention。
style.Indention= 3;
文本旋转
style.Rotation=(short)90;
以上代码是把单元格A1中的文本逆时针旋转90度,等同于下图中的设置:
重点讲解NPOI中边框的设置和使用
边框和其他单元格设置一样也是在HSSFCellStyle上操作的,HSSFCellStyle有2种和边框相关的属性,分别是:

边框相关属性

说明

范例

Border+方向

边框类型

BorderTop, BorderBottom,BorderLeft, BorderRight

方向+BorderColor

边框颜色

TopBorderColor,BottomBorderColor, LeftBorderColor, RightBorderColor


下面我们假设我们要把一个单元格的四周边框都设置上,可以用下面的代码:
HSSFSheet  sheet = hssfworkbook.CreateSheet("newsheet");
HSSFRow row =sheet.CreateRow(1);
HSSFCell cell= row.CreateCell(1);
HSSFCellStyle style = hssfworkbook.CreateCellStyle();
style.BorderBottom=HSSFCellStyle.BORDER_THIN;
style.BorderLeft=HSSFCellStyle.BORDER_THIN;
style.BorderRight=HSSFCellStyle.BORDER_THIN;
style.BorderTop= HSSFCellStyle.BORDER_THIN ;
cell.CellStyle=style;
这段代码使用了最普通的细边框,使得这个单元格看上去像块空心砖头。
注意:这里我们没有设置边框的颜色,但这不会影响最终的效果,因为Excel会用默认的黑色给边框上色。
如果要设置颜色的话,也很简单,如下:
style.BottomBorderColor=HSSFColor.GREEN.index;
以上代码将底部边框设置为绿色,要注意,不是直接把HSSFColor.GREEN赋给XXXXBorderColor属性,而是把index的值赋给它。

猜你喜欢

转载自blog.csdn.net/oYuHuaChen/article/details/82109811
今日推荐