POI设置Excel单元格样式

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:

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

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

Published by

风君子

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

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注