В настоящее время я работаю над задачей, в которой мне нужно экспортировать отчет xls.Поскольку в проекте, над которым я работаю, используется Spring, для этого я использовал абстрактный класс с именем «AbstractXlsView», предоставленный Spring.Все работает нормально, файлы экспортируются и т. Д., Вплоть до стилизации файла xls.
Одним из требований является центрирование, добавление границ и т. Д. Проблема заключается в том, что стиль (т. Е. Центральный текст, граница) применяется к таблице xls только до «строки 43».Я использовал отладчик, и метод createTableBorders вызывается после строки 43 до конца моего списка.Но стиль не применяется после строки 43, и я не понимаю его.Смотрите также img прилагается.
Кто-нибудь знает, что происходит или что я делаю неправильно?
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;
}
}