POI中设置Excel单元格格式样式(居中,字体,边框等)

  1. 创建sheet什么的就不多说了,直接进入正题  
  2.   
  3.   
  4. HSSFCellStyle cellStyle = wb.createCellStyle();    
  5.  一、设置背景色:  
  6.   
  7.   
  8. cellStyle.setFillForegroundColor((short) 13);// 设置背景色    
  9. cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);    
  10. 二、设置边框:  
  11.   
  12.   
  13. cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框    
  14. cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框    
  15. cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框    
  16. cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框    
  17. 三、设置居中:  
  18.   
  19.   
  20. cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中    
  21. 四、设置字体:  
  22.   
  23.   
  24. HSSFFont font = wb.createFont();    
  25. font.setFontName("黑体");    
  26. font.setFontHeightInPoints((short) 16);//设置字体大小    
  27.     
  28. HSSFFont font2 = wb.createFont();    
  29. font2.setFontName("仿宋_GB2312");    
  30. font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示    
  31. font2.setFontHeightInPoints((short) 12);    
  32.     
  33. cellStyle.setFont(font);//选择需要用到的字体格式    
  34. 五、设置列宽:  
  35.   
  36. sheet.setColumnWidth(0, 3766);   
  37. //第一个参数代表列id(从0开始),第2个参数代表宽度值  参考 :"2012-08-10"的宽度为2500    
  38. 六、设置自动换行:  
  39.   
  40. cellStyle.setWrapText(true);//设置自动换行    
  41. 七、合并单元格:  
  42.   
  43. Region region1 = new Region(0, (short) 0, 0, (short) 6);//参数1:行号 参数2:起始列号 参数3:行号 参数4:终止列号    
  44.   
  45.   
  46. //此方法在POI3.8中已经被废弃,建议使用下面一个    
  47. 或者用  
  48.   
  49.   
  50. CellRangeAddress region1 = new CellRangeAddress(rowNumber, rowNumber, (short) 0, (short) 11);     
  51.   
  52.   
  53. //参数1:起始行 参数2:终止行 参数3:起始列 参数4:终止列      
  54. 但应注意两个构造方法的参数不是一样的,具体使用哪个取决于POI的不同版本。   
  55.   
  56.   
  57. sheet.addMergedRegion(region1);    


POI是apache提供的一个读写Excel文档的开源组件,在操作excel时常要合并单元格,合并单元格的方法是:

sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 2));

自适应列宽度:

sheet.autoSizeColumn(1); 

sheet.autoSizeColumn(1, true);

这两种方式都是自适应列宽度,但是注意这个方法在后边的版本才提供,poi的版本不要太老。 注意:第一个方法在合并单元格的的单元格并不好使,必须用第二个方法。

sheet.setColumnWidth(m, “列名”.getBytes().length*2*256);

这个方法是计算字符串的长度,以便设置列宽,该方法在解决中文的问题上比较好,前面两种方法对中文不好好用。。。。

还有在自适应宽度的时候,有时候遇到单元格是公式单元格,自适应不起作用,那是因为单元格存的是公式,并不是真正的数据,解决方法:

HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet.getWorkbook());

 

CellValue cell71Val = evaluator.evaluate(cell71);

cell71.setCellValue(cell71Val.getNumberValue());

将格式化后的数据再次set进去,就是真正的值了。

 

 //字体
         HSSFFont font = workbook.createFont();
         font.setFontName("仿宋_GB2312");
         font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示
         font.setFontHeightInPoints((short) 12);
         
         HSSFCellStyle style = workbook.createCellStyle();
         //设置颜色
         style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
         style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);//前景颜色
         style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);//填充方式,前色填充
         //边框填充
         style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
         style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
         style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
         style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
         style.setFont(font);
         style.setWrapText(false);


你可能感兴趣的:(java)