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, intcolNum) {for (int i = 0; i < colNum; i++) {int v = 0;v= Math.round(Float.parseFloat("20.0") * 267.5F);
sheet.setColumnWidth(i, v);
}
}
//设置行的字体和样式
public voidsetCellStyle(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);
}