- 创建sheet什么的就不多说了,直接进入正题
- 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.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中
- 四、设置字体:
- HSSFFont font = wb.createFont();
- font.setFontName("黑体");
- font.setFontHeightInPoints((short) 16);//设置字体大小
- HSSFFont font2 = wb.createFont();
- font2.setFontName("仿宋_GB2312");
- font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示
- font2.setFontHeightInPoints((short) 12);
- cellStyle.setFont(font);//选择需要用到的字体格式
- 五、设置列宽:
- sheet.setColumnWidth(0, 3766);
- //第一个参数代表列id(从0开始),第2个参数代表宽度值 参考 :"2012-08-10"的宽度为2500
- 六、设置自动换行:
- cellStyle.setWrapText(true);//设置自动换行
- 七、合并单元格:
- Region region1 = new Region(0, (short) 0, 0, (short) 6);//参数1:行号 参数2:起始列号 参数3:行号 参数4:终止列号
- //此方法在POI3.8中已经被废弃,建议使用下面一个
- 或者用
- CellRangeAddress region1 = new CellRangeAddress(rowNumber, rowNumber, (short) 0, (short) 11);
- //参数1:起始行 参数2:终止行 参数3:起始列 参数4:终止列
- 但应注意两个构造方法的参数不是一样的,具体使用哪个取决于POI的不同版本。
- 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);