2015-06-04 2 views
0

В соответствии с документацией мы должны иметь возможность загрузить шаблон с стилем, записать в него данные, а затем вывести результирующие данные + стиль. Однако каждая ячейка, которую мы пишем, имеет свое форматирование из удаляемого шаблона, поэтому только ячейки, которые не были записаны, все еще имеют форматирование. мы не можем использовать метод «добавить», так как у нас нет списков объектов домена с соответствующими свойствами, у нас есть произвольный массив данных.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) 

ответ

0

Это, вероятно, будет очень общим, и я прошу прощения за то, что заранее, но будет возможным только «обратно» каждый тип клеток, прежде чем записать значение для него и восстановить стиль как только вы закончите писать? В основном вы бы сделали

def cellStyle = xlsxReporter.getCellAt(row, i).getCellStyle() 
xlsxExporter.putCellValue(row, i, item.value.toString()) 
xlsxReporter.getCellAt(row, i).setCellStyle(cellStyle) 
+0

Спасибо за ответ. Я действительно пробовал это, но getCellAt выбрасывает исключение нулевого указателя, если вы вызываете его перед putCellValue. Я попытался снова вызвать putCellValue в конце, после setCellStyle, но это тоже не помогло. –

Смежные вопросы