POI设置Excel单元格样式

POI中可能会用到一些需要设置EXCEL单元格格式的操作小结:

先获取工作薄对象:

HSSFWorkbook wb = new HSSFWorkbook);

HSSFSheet sheet = wb.createSheet);

HSSFCellStyle cellStyle = wb.createCellStyle);

一、设置背景色:

cellStyle.setFillForegroundColorshort) 13);// 设置背景色
cellStyle.setFillPatternHSSFCellStyle.SOLID_FOREGROUND);

二、设置边框:

  cellStyle.setBorderBottomHSSFCellStyle.BORDER_THIN); //下边框
  cellStyle.setBorderLeftHSSFCellStyle.BORDER_THIN);//左边框
  cellStyle.setBorderTopHSSFCellStyle.BORDER_THIN);//上边框
  cellStyle.setBorderRightHSSFCellStyle.BORDER_THIN);//右边框
  // 设置单元格边框颜色  
  cellStyle.setBottomBorderColorHSSFColor.RED.index);  
  cellStyle.setTopBorderColorHSSFColor.GREEN.index);  
  cellStyle.setLeftBorderColorHSSFColor.BLUE.index); 
  设置单元格边框样式  
  CellStyle.BORDER_DOUBLE      双边线 
  CellStyle.BORDER_THIN        细边线  
  CellStyle.BORDER_MEDIUM      中等边线  
  CellStyle.BORDER_DASHED      虚线边线  
  CellStyle.BORDER_HAIR        小圆点虚线边线 
  CellStyle.BORDER_THICK       粗边线  

三、设置居中:

cellStyle.setAlignmentCellStyle.ALIGN_CENTER);//水平居中  
cellStyle.setVerticalAlignmentCellStyle.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.setFontHeightInPointsshort) 13);//设置字体大小
font.setItalictrue); // 设置字体为斜体字 
font.setColorFont.COLOR_RED); // 将字体设置为“红色”
font.setUnderlineFont.U_DOUBLE); // 添加(Font.U_SINGLE单条下划线/Font.U_DOUBLE双条下划线) 
// font.setStrikeouttrue); // 是否添加删除线

HSSFFont font2 = wb.createFont);
font2.setFontName"宋体");
font2.setBoldweightHSSFFont.BOLDWEIGHT_BOLD);//粗体显示
font2.setFontHeightInPointsshort) 12);

cellStyle.setFontfont);//选择需要用到的字体格式

五、设置整列的样式

sheet.setDefaultColumnStyleshort column, CellStyle style)

六、设置自动换行:

cellStyle.setWrapTexttrue);//设置自动换行

七、合并单元格:

//参数1:行号 参数2:起始列号 参数3:行号 参数4:终止列号
Region region1 = new Region0, short) 0, 0, short) 6);
//此方法在POI3.8中已经被废弃,建议使用下面一个
注意导入的jar包:import org.apache.poi.ss.util.CellRangeAddress
//参数1:起始行 参数2:终止行 参数3:起始列号 参数4:终止列号 CellRangeAddress region1 = new CellRangeAddressrowNumber, rowNumber, short) 0, short) 11); sheet.addMergedRegionregion1);

 八、设置行的高度

在Excel中,每一行的高度是要求一致的,所以设置单元格的高度,其实就是设置行的高度,所以相关的属性也应该在HSSFRow上,它就是HSSFRow.Height和HeightInPoints,这两个属性的区别在于HeightInPoints的单位是点,而Height的单位是1/20个点,所以Height的值永远是HeightInPoints的20倍。

Row sizeRow = sheet.createRow6);  

sizeRow.setHeightInPoints30); // 设置行的高度  
//或者
sizeRow.setHeightshort) 40*20)); // 设置行的高度

九、设置和读取列宽

SetColumnWidth的第二个参数要乘以256,这是怎么回事呢?其实,这个参数的单位是1/256个字符宽度,也就是说,这里是把B列的宽度设置为了100个字符。

//第一个参数代表列id从0开始),第2个参数代表宽度值
sheet.setColumnWidth0, 100*256); 
//读取列宽
int col1width = sheet1.GetColumnWidth1);//参数列的序号

十、设置默认的列宽和行高

一旦设置了这些属性,如果某一行或者某一列没有设置宽度,就会使用默认宽度或高度。

//设置默认列宽和行高
sheet.setDefaultColumnWidth25);
//sheet.setDefaultRowHeightshort) 40*20));
sheet.setDefaultRowHeightInPoints20);

工具方法:

    // 设置列宽)
    public  static void setColumnWidthHSSFSheet sheet, int colNum) {
        for int i = 0; i < colNum; i++) {
            int v = 0;           
            v = Math.roundFloat.parseFloat"20.0") * 267.5F);
            sheet.setColumnWidthi, v);
        }
    }
    
    //设置行的字体和样式
    public void setCellStyleHSSFWorkbook workbook,HSSFCell cell){
        // 设置样式
        HSSFCellStyle cellStyle = workbook.createCellStyle);
        // 设置字体居中
        cellStyle.setAlignmentHSSFCellStyle.ALIGN_CENTER);                 
        // 设置字体
        HSSFFont font = workbook.createFont);
        font.setFontName"宋体");        
        font.setFontHeightInPointsshort) 13);
        cellStyle.setFontfont);
        cell.setCellStylecellStyle);
    }                         

 参考:

  POI的API:

  http://tool.oschina.net/apidocs/apidoc?api=apache-POI

  http://www.bug315.com/article/6.htm

Published by

风君子

独自遨游何稽首 揭天掀地慰生平