POI中可能会用到一些需要设置EXCEL单元格格式的操作小结:
先获取工作薄对象:
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet();
HSSFCellStyle cellStyle = wb.createCellStyle();
一、设置背景色:
cellStyle.setFillForegroundColor((short) 13);// 设置背景色
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
二、设置边框:
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框 cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框 cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框 cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框 // 设置单元格边框颜色 cellStyle.setBottomBorderColor(HSSFColor.RED.index); cellStyle.setTopBorderColor(HSSFColor.GREEN.index); cellStyle.setLeftBorderColor(HSSFColor.BLUE.index); 设置单元格边框样式 CellStyle.BORDER_DOUBLE 双边线 CellStyle.BORDER_THIN 细边线 CellStyle.BORDER_MEDIUM 中等边线 CellStyle.BORDER_DASHED 虚线边线 CellStyle.BORDER_HAIR 小圆点虚线边线 CellStyle.BORDER_THICK 粗边线
三、设置居中:
cellStyle.setAlignment(CellStyle.ALIGN_CENTER);//水平居中 cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);//垂直居中
// 设置单元格内容水平对其方式 // HSSFCellStyle.ALIGN_CENTER 居中对齐 // HSSFCellStyle.ALIGN_LEFT 左对齐 // HSSFCellStyle.ALIGN_RIGHT 右对齐
// 设置单元格内容垂直对其方式 // HSSFCellStyle.VERTICAL_TOP 上对齐 // HSSFCellStyle.VERTICAL_CENTER 中对齐 // HSSFCellStyle.VERTICAL_BOTTOM 下对齐
四、设置字体:
HSSFFont font = wb.createFont(); font.setFontName("黑体"); font.setFontHeightInPoints((short) 13);//设置字体大小 font.setItalic(true); // 设置字体为斜体字 font.setColor(Font.COLOR_RED); // 将字体设置为“红色” font.setUnderline(Font.U_DOUBLE); // 添加(Font.U_SINGLE单条下划线/Font.U_DOUBLE双条下划线) // font.setStrikeout(true); // 是否添加删除线 HSSFFont font2 = wb.createFont(); font2.setFontName("宋体"); font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示 font2.setFontHeightInPoints((short) 12); cellStyle.setFont(font);//选择需要用到的字体格式
五、设置整列的样式
sheet.setDefaultColumnStyle(short column, CellStyle style)
六、设置自动换行:
cellStyle.setWrapText(true);//设置自动换行
七、合并单元格:
//参数1:行号 参数2:起始列号 参数3:行号 参数4:终止列号 Region region1 = new Region(0, (short) 0, 0, (short) 6); //此方法在POI3.8中已经被废弃,建议使用下面一个
注意导入的jar包:import org.apache.poi.ss.util.CellRangeAddress //参数1:起始行 参数2:终止行 参数3:起始列号 参数4:终止列号 CellRangeAddress region1 = new CellRangeAddress(rowNumber, rowNumber, (short) 0, (short) 11); sheet.addMergedRegion(region1);
八、设置行的高度
在Excel中,每一行的高度是要求一致的,所以设置单元格的高度,其实就是设置行的高度,所以相关的属性也应该在HSSFRow上,它就是HSSFRow.Height和HeightInPoints,这两个属性的区别在于HeightInPoints的单位是点,而Height的单位是1/20个点,所以Height的值永远是HeightInPoints的20倍。
Row sizeRow = sheet.createRow(6); sizeRow.setHeightInPoints(30); // 设置行的高度
//或者
sizeRow.setHeight((short) (40*20)); // 设置行的高度
九、设置和读取列宽
SetColumnWidth的第二个参数要乘以256,这是怎么回事呢?其实,这个参数的单位是1/256个字符宽度,也就是说,这里是把B列的宽度设置为了100个字符。
//第一个参数代表列id(从0开始),第2个参数代表宽度值 sheet.setColumnWidth(0, 100*256); //读取列宽 int col1width = sheet1.GetColumnWidth(1);//参数列的序号
十、设置默认的列宽和行高
一旦设置了这些属性,如果某一行或者某一列没有设置宽度,就会使用默认宽度或高度。
//设置默认列宽和行高 sheet.setDefaultColumnWidth(25); //sheet.setDefaultRowHeight((short) (40*20)); sheet.setDefaultRowHeightInPoints(20);
工具方法:
// 设置列宽() public static void setColumnWidth(HSSFSheet sheet, int colNum) { for (int i = 0; i < colNum; i++) { int v = 0; v = Math.round(Float.parseFloat("20.0") * 267.5F); sheet.setColumnWidth(i, v); } }
//设置行的字体和样式 public void setCellStyle(HSSFWorkbook workbook,HSSFCell cell){ // 设置样式 HSSFCellStyle cellStyle = workbook.createCellStyle(); // 设置字体居中 cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 设置字体 HSSFFont font = workbook.createFont(); font.setFontName("宋体"); font.setFontHeightInPoints((short) 13); cellStyle.setFont(font); cell.setCellStyle(cellStyle); }
参考:
POI的API: