Spring Boot导出Excel时XSSFSheet添加顶部标题不生效问题求助
问题核心原因
你合并单元格后标题不显示的根本原因是混淆了Excel两类不同的标题逻辑:
- 你调用的
sheet.getHeader()获取的是Excel打印页眉,仅在打印预览、实际打印时才会展示,不会出现在工作表的普通可视单元格区域 - 你合并了第0行到第6行、第0列到第29列的单元格区域,但完全没有往这个区域写入单元格内容,自然看不到你要的自定义标题
修复步骤
- 合并单元格后,先创建合并区域左上角的单元格(也就是第0行第0列的单元格),给这个单元格写入标题内容、设置对应样式,内容会自动在整个合并区域生效
- 如果你不需要打印时展示页眉,可以直接删除原有
Header相关代码,需要的话可以保留
修正后代码示例
private XSSFSheet sheet; private void writeHeaderLine() { sheet = workbook.createSheet("Aday Mülakat Listesi"); // 合并单元格逻辑保留 int firstRow = 0; int lastRow = 6; int firstCol = 0; int lastCol = 29; sheet.addMergedRegion(new CellRangeAddress(firstRow, lastRow, firstCol, lastCol)); // ========== 新增:往合并区域写入标题内容 ========== // 创建第0行(合并区域的第一行) Row titleRow = sheet.createRow(0); // 创建合并区域左上角单元格 Cell titleCell = titleRow.createCell(0); // 设置标题内容 titleCell.setCellValue("My Styled Text with page number"); // 设置标题样式 CellStyle titleStyle = workbook.createCellStyle(); XSSFFont titleFont = workbook.createFont(); titleFont.setFontName("Calibri"); titleFont.setFontHeightInPoints((short)14); titleFont.setBold(true); titleStyle.setFont(titleFont); titleStyle.setAlignment(HorizontalAlignment.CENTER); titleStyle.setVerticalAlignment(VerticalAlignment.CENTER); titleCell.setCellStyle(titleStyle); // ========== 新增内容结束 ========== // 原有列表头逻辑保留,从第7行开始创建 Row row = sheet.createRow(7); CellStyle cellStyle = workbook.createCellStyle(); XSSFFont font = workbook.createFont(); font.setBold(true); font.setFontHeight(11); font.setFamily(FontFamily.ROMAN); cellStyle.setFont(font); cellStyle.setAlignment(HorizontalAlignment.CENTER); createCell(row, 0, "Name", cellStyle); createCell(row, 1, "Surname", cellStyle); createCell(row, 2, "School Name", cellStyle); createCell(row, 3, "", cellStyle); // 其余原有逻辑不变 ... }
内容的提问来源于stack exchange,提问作者zdnmn
相关产品推荐
相关产品推荐

