重点设置在工具类中已标出
public static void exportComplexExcel(TemplateExportParams templatePath, Map<String, Object> map, String fileName,
HttpServletResponse response, Map<Integer, Short> formatTemplate, Integer startRow) throws IOException {
Workbook workbook = ExcelExportUtil.exportExcel(templatePath, map);
Iterator<Sheet> sheetIterator = workbook.sheetIterator();
while (sheetIterator.hasNext()) {
Iterator<Row> rowIterator = sheetIterator.next().rowIterator();
while (rowIterator.hasNext()) {
Iterator<Cell> cellIterator = rowIterator.next().cellIterator();
//起始行
if (cellIterator.next().getRowIndex() >= 1) {
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
String cellValue = cell.getStringCellValue().trim();
CellStyle groundStyle = workbook.createCellStyle();
Font font = workbook.createFont();
//指定列的单元格
if (cell.getColumnIndex() == 2) {
// **重点:设置背景填充色的时候必须先设置填充模式**
groundStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
//**然后在设置背景色**,颜色参考 IndexedColors 编码枚举值 与 颜色 对照表
groundStyle.setFillForegroundColor(formatTemplate.get(cell.getColumnIndex()));
//groundStyle.setFillForegroundColor(IndexedColors.RED.getIndex());
cell.setCellStyle(groundStyle);
}
}
}
}
}
downLoadExcel(fileName, response, workbook);
}
/**
* excel下载
*
* @param fileName 下载时的文件名称
* @param response
* @param workbook excel数据
*/
private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) throws IOException {
try {
response.setCharacterEncoding("UTF-8");
response.setHeader("content-Type", "application/vnd.ms-excel");
String fname = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
response.setHeader("Content-Disposition", "attachment;filename=" + fname + ".xlsx");
workbook.write(response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
throw new IOException(e.getMessage());
}
}