В соответствии с документацией мы должны иметь возможность загрузить шаблон с стилем, записать в него данные, а затем вывести результирующие данные + стиль. Однако каждая ячейка, которую мы пишем, имеет свое форматирование из удаляемого шаблона, поэтому только ячейки, которые не были записаны, все еще имеют форматирование. мы не можем использовать метод «добавить», так как у нас нет списков объектов домена с соответствующими свойствами, у нас есть произвольный массив данных.Grails excel-export перезаписывает стили шаблонов
OutputStream outputStream = new ByteArrayOutputStream()
WebXlsxExporter xlsxExporter = new WebXlsxExporter(servletContext.getRealPath("/reporting/report_template.xlsx"))
xlsxExporter.putCellValue(0, 0, reportSchedule.report.title)
xlsxExporter.putCellValue(0, 3, new Date())
xlsxExporter.putCellValue(0, 6, response.time + "ms")
if (! response.rows.isEmpty()) {
int row = 1
headers = response.rows[0].keySet();
headers.eachWithIndex() {item, i ->
xlsxExporter.putCellValue(row, i, item.value.toString())
};
row++
response.rows.each {line ->
line.eachWithIndex { item, int i ->
xlsxExporter.putCellValue(row, i, item.value.toString())
}
row++
}
} else {
xlsxExporter.putCellValue(2,1, "No Data")
}
xlsxExporter.save(outputStream)
Спасибо за ответ. Я действительно пробовал это, но getCellAt выбрасывает исключение нулевого указателя, если вы вызываете его перед putCellValue. Я попытался снова вызвать putCellValue в конце, после setCellStyle, но это тоже не помогло. –