记录 POI 3.10 导出 Excel 单元格设置背景
public static void main(String[] args) {
// 创建一个新的Workbook
XSSFWorkbook wb = new XSSFWorkbook();
// 创建一个Sheet页
Sheet sheet = wb.createSheet("Colored Sheet");
// 创建一个行
Row row = sheet.createRow(1);
// 创建一个单元格
Cell cell = row.createCell(1);
//创建CellStyle与字体对象
XSSFCellStyle style = wb.createCellStyle();
XSSFFont font = wb.createFont();
font.setFontName("黑体");
// 字体大小
font.setFontHeightInPoints((short) 28);
// 加粗
font.setBold(true);
// 使用RGB形式设置颜色
XSSFColor myColor = new XSSFColor(new java.awt.Color(255, 204, 153));
style.setFillForegroundColor(myColor);
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
// 确定边框样式
short titleBorderThin = CellStyle.BORDER_THIN;
short titleBorderColor = IndexedColors.BLACK.getIndex();
// 应用边框样式
style.setBorderTop(titleBorderThin);
style.setTopBorderColor(titleBorderColor);
style.setBorderBottom(titleBorderThin);
style.setBottomBorderColor(titleBorderColor);
style.setBorderLeft(titleBorderThin);
style.setLeftBorderColor(titleBorderColor);
style.setBorderRight(titleBorderThin);
style.setRightBorderColor(titleBorderColor);
style.setFont(font);
// 设置单元格的样式
cell.setCellValue("Custom Color");
cell.setCellStyle(style);
//自动调整第一列的宽度 在写入工作簿之前,所有的数据必须已经被写入单元格中,因为只有实际的数据写入后,POI才能计算出正确的列宽。
sheet.autoSizeColumn(1);
// 手动设置第一列宽度为10个字符的宽度(约2560)
// sheet.setColumnWidth(1, 2560);
// 写入到Excel文件
try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
wb.write(fileOut);
} catch (Exception e) {
e.printStackTrace();
}
// 最后确保关闭Workbook以释放资源
try {
wb.close();
} catch (Exception e) {
e.printStackTrace();
}
}