流程说明:
POI对象中包括一部分基础颜色,其使用方式为
HSSFCellStyle styleheader = wb.createCellStyle();// 创建一个单元的样式
// 背景色的设定
style.setFillBackgroundColor(HSSFColor.GREEN.index);
其中,HSSFColor.GREEN.index
就是POI自带的颜色。
我们的思路就是,修改POI自带的颜色,将其的RGB配置成我们想要的颜色,然后让系统调用。
完整流程:
1. 创建工作表以及内容sheet页对象
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Sheet 1");
2. 修改原有poi的颜色对象,将其修改为需要的颜色
//设置自定义颜色
HSSFPalette customPalette = wb.getCustomPalette();
customPalette.setColorAtIndex(HSSFColor.LIGHT_GREEN.index, (byte) 0, (byte) 204, (byte) 153);
customPalette.setColorAtIndex(HSSFColor.LIGHT_BLUE.index, (byte) 203, (byte) 236, (byte) 222);
customPalette.setColorAtIndex(HSSFColor.LIGHT_YELLOW.index, (byte) 231, (byte) 246, (byte) 239);
3. 创建row
HSSFCell cell;
HSSFRow row;
4. 创建style对象
HSSFCellStyle styleheader = wb.createCellStyle();// 创建一个单元的样式
// 背景色的设定
style.setFillBackgroundColor(HSSFColor.GREEN.index);
// 填充模式
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 设置水平居中
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中
// 设置上下左右边框样式
style.setBorderLeft(HSSFCellStyle.BORDER_THICK);
style.setBorderBottom(HSSFCellStyle.BORDER_THICK);
style.setBorderRight(HSSFCellStyle.BORDER_THICK);
style.setBorderTop(HSSFCellStyle.BORDER_THICK);
//设置边框颜色
style.setBottomBorderColor(HSSFColor.WHITE.index);
style.setTopBorderColor(HSSFColor.WHITE.index);
style.setLeftBorderColor(HSSFColor.WHITE.index);
style.setRightBorderColor(HSSFColor.WHITE.index);
// 设置字体
HSSFFont font = wb.createFont();
font.setFontName("Microsoft Yahei");
font.setFontHeightInPoints((short) 14);
font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
//设置背景颜色
style.setFillForegroundColor(HSSFColor.LIGHT_BLUE.index);
font.setColor(HSSFColor.BLACK.index);
5. 在row中增加cell
//表头数据
String[] headRow1 = { "", "GMV", "UV","CVR","PRICE"};
//从第二行开始插入数据
int rowint = 1;
row = sheet.createRow((short) rowint++);
row.setHeight((short)(538));
//插入第一个表头数据
for (int i = 0; i < headRow1.length; i++) {
cell = row.createCell(i+6);
cell.setCellValue(headRow1[i]);
cell.setCellStyle(styleheader);
}
其中,最主要的代码就是第二段。