public static void writeExcel(List<ServAuthBean> data_list){
//新建工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
//自定义颜色
HSSFPalette palette = workbook.getCustomPalette();
//十六进制颜色RGB码
String color = "99CC00";
//将十六进制码转为十进制数字
int r = Integer.parseInt(color.substring(0, 2), 16);
int g = Integer.parseInt(color.substring(2, 4), 16);
int b = Integer.parseInt(color.substring(4, 6), 16);
//自定义索引颜色
palette.setColorAtIndex((short)9, (byte)r, (byte)g, (byte)b);
//创建单元格样式
HSSFCellStyle cell_style = workbook.createCellStyle();
//此处将HSSFCellStyle.SOLID_FOREGROUND改为FillPatternType.SOLID_FOREGROUND,网上搜索资料一堆错误用法
cell_style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cell_style.setAlignment(HorizontalAlignment.CENTER);
cell_style.setFillForegroundColor((short)9);
//以下为API自带的颜色设置
// cell_style.setFillForegroundColor(IndexedColors.BRIGHT_GREEN1.index);
//自定义字体颜色, 同单元格样式
HSSFFont font = workbook.createFont();
font.setFontHeightInPoints((short) 9);
//字体设置为Arial
font.setFontName(HSSFFont.FONT_ARIAL);
//设置索引 10 为白色
palette.setColorAtIndex((short)10, (byte) 255, (byte) 255, (byte) 255);
//将字体颜色设为白色
font.setColor((short)9);
cell_style.setFont(font);
//创建sheet表格
HSSFSheet sheet = workbook.createSheet("ServAuth");
//设置单元格列宽
sheet.setColumnWidth(1, 50*100);
sheet.setColumnWidth(2, 50*100);
sheet.setColumnWidth(3, 50*100);
// 创建报文头第一行
HSSFRow row_0 = sheet.createRow(0);
HSSFCell cell0 = row_0.createCell(0);
// 数据域个数
cell0.setCellValue("数据域个数");
cell0.setCellStyle(cell_style);
// 第二行赋值操作
HSSFRow row_1 = sheet.createRow(1);
row_1.createCell(0).setCellValue(10);
// 第三行赋值
HSSFRow row_2 = sheet.createRow(2);
HSSFCell cell_2_0 = row_2.createCell(0);
cell_2_0.setCellValue("服务编号");
cell_2_0.setCellStyle(cell_style);
HSSFCell cell_2_1 = row_2.createCell(1);
cell_2_1.setCellValue("服务请求方代码");
cell_2_1.setCellStyle(cell_style);
HSSFCell cell_2_2 = row_2.createCell(2);
cell_2_2.setCellValue("授权标志");
cell_2_2.setCellStyle(cell_style);
// 第四行往后用查询数据填充
int row_num = 3;
for (ServAuthBean data_bean : data_list) {
HSSFRow row = sheet.createRow(row_num);
row.createCell(0).setCellValue(data_bean.getServ_id());
row.createCell(1).setCellValue(data_bean.getApps_sys_id());
row.createCell(2).setCellValue(data_bean.getStatus());
row_num++;
}
//文件名
String file_name = "授权.xls";
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file_name);
try {
workbook.write(fos);
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
if(workbook != null) {
workbook.close();
}
if(fos != null) {
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
最近项目遇到用POI导出文件,碰到关于excel单元格样式的问题,谨记录一波!