Apache poi с границей стиля Spring AbstractXlsView работает только для ряда строк - PullRequest
0 голосов
/ 20 ноября 2018

В настоящее время я работаю над задачей, в которой мне нужно экспортировать отчет xls.Поскольку в проекте, над которым я работаю, используется Spring, для этого я использовал абстрактный класс с именем «AbstractXlsView», предоставленный Spring.Все работает нормально, файлы экспортируются и т. Д., Вплоть до стилизации файла xls.

Одним из требований является центрирование, добавление границ и т. Д. Проблема заключается в том, что стиль (т. Е. Центральный текст, граница) применяется к таблице xls только до «строки 43».Я использовал отладчик, и метод createTableBorders вызывается после строки 43 до конца моего списка.Но стиль не применяется после строки 43, и я не понимаю его.Смотрите также img прилагается.enter image description here

Кто-нибудь знает, что происходит или что я делаю неправильно?

Component
    public class ExportTemplateExcelView extends AbstractXlsView {
        @Override
        protected void buildExcelDocument(Map<String, Object> model, Workbook workbook, HttpServletRequest request, HttpServletResponse response)
                throws Exception {

            List<SampleScenarioAndTask> scenarioAndTasks = (List<SampleScenarioAndTask>) model.get("templateToExport");
            Sheet sheet = workbook.createSheet(scenarioAndTasks.get(0).getScenarioName());
            sheet.setFitToPage(true);

            int rowCount = 0;
            Row header = sheet.createRow(rowCount++);
            header.createCell(0).setCellValue("Some Header1");
            header.createCell(1).setCellValue("Some Header2");
            header.createCell(2).setCellValue("Some Header3");
            createTableBorders(workbook,header);

            Row templateRow = null;
            for (SampleScenarioAndTask next : scenarioAndTasks) {
                templateRow = sheet.createRow(rowCount++);
                templateRow.createCell(0).setCellValue(next.getId());
                templateRow.createCell(1).setCellValue(next.getContent());
                templateRow.createCell(2).setCellValue(next.getType());
                createTableBorders(workbook,templateRow);
            }
            response.setHeader("Content-Disposition", "attachment; filename=template.xls");
        }

        public static void createTableBorders(Workbook wb, Row row){
            CellStyle style = getTableStyle(wb);
            for(int i = 0; i < row.getLastCellNum(); i++){//For each cell in the row
                row.getCell(i).setCellStyle(style);//Set the style
            }
        }

        public static CellStyle getTableStyle(Workbook wb){
            CellStyle style;
            style = wb.createCellStyle();
            style.setAlignment(HorizontalAlignment.CENTER);
            style.setWrapText(true);
            style.setBorderRight(BorderStyle.THIN);
            style.setRightBorderColor(IndexedColors.BLACK.getIndex());
            style.setBorderLeft(BorderStyle.THIN);
            style.setLeftBorderColor(IndexedColors.BLACK.getIndex());
            style.setBorderTop(BorderStyle.THIN);
            style.setTopBorderColor(IndexedColors.BLACK.getIndex());
            style.setBorderBottom(BorderStyle.THIN);
            style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
            //style.setDataFormat(doubleDataFormat);
            return style;
        }

    }
...