创建一个工作簿:
XSSFWorkbook workbook new XSSFWorkbook();
创建一个工作表:
XSSfSheet sheet= workbook.creatSheet();
创建一个行
//创建行需要注意的是:如果对同一行中进行数据操作,那么就要一定要保持行对象的唯一性,
//不然数据会操作不成功,创建一个行对象,对其添加数据,就会把之前的给覆盖掉。
XSSFRow row = sheet.creatRow();
创建一个单元格
//在对单元格进行样式设计的时候,需要对每一个单元格进行数据添加
XSSFCell cel = row.creatCell();
合并单元格
//从零开始计数
CellRangeAdress cellRangeAdress = new CellRangeAdress(起始行,结束行,起始列,结束列);
//合并单元格之后需要对单元格进行添加到表中
addMergedRegion(CellRangeAdress);
添加样式
XSSFCellStyle style = workbook.creatCellStyle();
//设置左右居中
style.setAlignment(XSSFCellStyle.ALIGN_CENTER);
//设置上下居中
style.setVerticalAlignment(VerticalAlignment.CENTER);
//设置拥有单元格边框
style.setBorderBottom(BorderStyle.THIN);//下边框
style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
style.setBorderLeft(BorderStyle.THIN);//左边框
style.setLeftBorderColor(IndexedColors.BLACK.getIndex());
style.setBorderRight(BorderStyle.THIN);//右边框
style.setRightBorderColor(IndexedColors.BLACK.getIndex());
style.setBorderTop(BorderStyle.THIN);//上边框
style.setTopBorderColor(IndexedColors.BLACK.getIndex());
对合并的单元格进行添加样式
//需要注意的是对合并单元格添加样式后,如果后面对同行没有合并的单元格添添加样式后,前面合并
//单元格的样式失效。解决方式就是将前面合并单元格后没有值的单元格设置为空值,同时添加样式。
setBorder(callRangeAddress1,sheet,workbook);
//setBorder是一个方法
public void setBorder(CellRangeAddress cellRangeAddress, XSSFSheet sheet,
XSSFWorkbook wb) throws Exception {
RegionUtil.setBorderLeft(1, cellRangeAddress, sheet, wb);
RegionUtil.setBorderBottom(1, cellRangeAddress, sheet, wb);
RegionUtil.setBorderRight(1, cellRangeAddress, sheet, wb);
RegionUtil.setBorderTop(1, cellRangeAddress, sheet, wb);
}
实现列宽的自适应
// 调整每一列宽度
sheet.autoSizeColumn((short) i);
// 解决自动设置列宽中文失效的问题
int length = cell1.getStringCellValue().getBytes().length;
sheet.setColumnWidth(i, length*240);
设置单元格的背景颜色
poi版本3以上能用
cellStyle.setFillForegroundColor(HSSFColor.RED.index);
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
1.IndexedColors.AQUA.getIndex()
IndexedColors.AUTOMATIC.getIndex()
IndexedColors.BLUE.getIndex()
IndexedColors.BLUE_GREY.getIndex()
IndexedColors.BRIGHT_GREEN.getIndex()
IndexedColors.BROWN.getIndex()
IndexedColors.CORAL.getIndex()
IndexedColors.CORNFLOWER_BLUE.getIndex()
IndexedColors.DARK_BLUE.getIndex()
IndexedColors.DARK_GREEN.getIndex()
IndexedColors.DARK_RED.getIndex()
IndexedColors.DARK_TEAL.getIndex()
IndexedColors.DARK_YELLOW.getIndex()
IndexedColors.GOLD.getIndex()
IndexedColors.GREEN.getIndex()
IndexedColors.GREY_25_PERCENT.getIndex()
IndexedColors.GREY_40_PERCENT.getIndex()
IndexedColors.GREY_50_PERCENT.getIndex()
IndexedColors.GREY_80_PERCENT.getIndex()
IndexedColors.INDIGO.getIndex()
IndexedColors.LAVENDER.getIndex()
IndexedColors.LEMON_CHIFFON.getIndex()
IndexedColors.LIGHT_BLUE.getIndex()
IndexedColors.LEMON_CHIFFON.getIndex()
IndexedColors.LIGHT_BLUE.getIndex()
IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex()
IndexedColors.LIGHT_GREEN.getIndex()
IndexedColors.LIGHT_ORANGE.getIndex()
IndexedColors.LIGHT_TURQUOISE.getIndex()
IndexedColors.LIGHT_YELLOW.getIndex()
IndexedColors.LIME.getIndex()
IndexedColors.MAROON.getIndex()
IndexedColors.OLIVE_GREEN.getIndex()
IndexedColors.ORANGE.getIndex()
IndexedColors.ORCHID.getIndex()
IndexedColors.PALE_BLUE.getIndex()
IndexedColors.PINK.getIndex()
IndexedColors.PLUM.getIndex()
IndexedColors.RED.getIndex()
IndexedColors.ROSE.getIndex()
IndexedColors.ROYAL_BLUE.getIndex()
IndexedColors.SEA_GREEN.getIndex()
IndexedColors.SKY_BLUE.getIndex()
IndexedColors.TAN.getIndex()
IndexedColors.TEAL.getIndex()
IndexedColors.TURQUOISE.getIndex()
IndexedColors.VIOLET.getIndex()
IndexedColors.WHITE.getIndex()
IndexedColors.YELLOW.getIndex()
设置颜色的3种方式
1.RGB
style.setFillForegroundColor(new XSSFColor(new Color(0, 0, 0)));
2.颜色的16进制
style.setFillForegroundColor(Color.decode("#D8D8D8"));
3.POI里面固定的一些颜色
XSSFColor clr = new XSSFColor();
clr.setIndexed(IndexedColors.RED.getIndex());
style.setFillForegroundColor(clr);