5.POI样式
在Excel应用中,会需要用到各种样式,包括单元格背景色、边框、高度、宽度、内容相对位置、字体格式、字体大小、字体颜色等等。POI提供了一系列的样式,能满足我们一般开发中的需求。
5.1 POI样式相关类
POI设置Excel样式主要通过以下几个相关类:
参数 |
说明 |
HSSFCellStyle |
POI样式类 |
HSSFFont |
字体样式类 |
HSSFColor |
颜色类 |
HSSFBorderFormatting |
边框样式类 |
HSSFCellStyle是最基本的样式类。HSSFCellStyle可以直接对上下左右四个边框、内容相对位置、单元格背景色、单元格填充方式、数字格式等进行设置。
HSSFFont是字体样式类,需set到HSSFCellStyle生效。HSSFFont可以设置字体样式、字体大小、字体颜色等。
HSSFColor是颜色类,该类里面有大部分基本颜色属性,提供基本颜色的直接调用。
5.2 单元格边框样式
单元格边框分为上、下、左、右四部分,可以设置其边框的宽度、样式及颜色。边框默认为无边框,若加上边框默认为黑色。
现在为一行10个单元格全部加上边框(细),并设置颜色为红色。
代码片段:
public static HSSFWorkbook write(InputStream inputStream) throws IOException, ClassNotFoundException{ //初始一个workbook HSSFWorkbook workbook = new HSSFWorkbook(inputStream); //获取样式 HSSFCellStyle style = createCellStyle(workbook); //创建一个sheet HSSFSheet sheet = workbook.getSheetAt(0); HSSFRow row = sheet.createRow(1); for(int cellnum = 0; cellnum < 10; cellnum++){ HSSFCell cell = row.createCell(cellnum); cell.setCellStyle(style); } return workbook; }
/** * 设置单元格的边框(细)且为红色 * @param workbook * @param cellnum * @return */ public static HSSFCellStyle createCellStyle(HSSFWorkbook workbook){ HSSFCellStyle style = workbook.createCellStyle(); //设置上下左右四个边框宽度 style.setBorderTop(HSSFBorderFormatting.BORDER_THIN); style.setBorderBottom(HSSFBorderFormatting.BORDER_THIN); style.setBorderLeft(HSSFBorderFormatting.BORDER_THIN); style.setBorderRight(HSSFBorderFormatting.BORDER_THIN); //设置上下左右四个边框颜色 style.setTopBorderColor(HSSFColor.RED.index); style.setBottomBorderColor(HSSFColor.RED.index); style.setLeftBorderColor(HSSFColor.RED.index); style.setRightBorderColor(HSSFColor.RED.index);
return style; } |
输出结果:
图24
5.3 单元格背景色
单元格背景色填充涉及到填充颜色和填充方式,现以最常用的填充方式填充天蓝色背景。
代码片段:
在上面代码中加入: //设置单元格背景色 style.setFillForegroundColor(HSSFColor.SKY_BLUE.index); style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); |
输出结果:
图25
注:单元格背景色暂不做详解,在附录中我会列出颜色作为开发参考。
5.4 单元格字体格式
字体格式包括书写体、颜色、大小、加粗、斜体、下划线、删除线等。
以下为POI中字体默认属性:
字体属性 |
Default |
书写体 |
宋体 |
颜色 |
黑色 |
大小 |
12 有待考证 |
加粗 |
无 |
斜体 |
无 |
下划线 |
无 |
删除线 |
无 |
现将字体设置为幼圆、9px、颜色黄色、加粗、斜体、下划线、删除线作为示例。
代码片段:
在上面代码中加入: 设置数据到单元格代码片段(略)
//设置字体格式 HSSFFont font = workbook.createFont(); font.setFontName("幼圆"); font.setFontHeightInPoints((short)9); font.setColor(HSSFColor.YELLOW.index); font.setBoldweight(font.BOLDWEIGHT_BOLD); font.setItalic(true); font.setStrikeout(true); font.setUnderline((byte)1); //将字体格式设置到HSSFCellStyle上 style.setFont(font); |
输出结果:
图26
5.5 单元格对齐方式
单元格的对齐