Grails: Excel экспортирует проблемы стиля .xlsx, сообщение об ошибке при открытии файла - PullRequest
0 голосов
/ 05 марта 2020

Я использую плагин grails-excel-export для экспорта данных в Excel (в формате xlsx), но у меня возникают проблемы при открытии файла в Microsoft Office (без проблем с OpenOffice) .

Когда я открываю его, я получаю сообщение "Мы обнаружили проблему с некоторым содержимым в" exportedFile.xlsx ". Хотите, чтобы мы попытались восстановить столько, сколько мы можем? Если вы доверяете источнику этой книги, нажмите Да ", так же, как эта:

enter image description here

Я уже выяснил, что проблема возникает только при применении любого стиля ячеек к книге, в моем случае я должен установить жирный шрифт для первой строки.

Это код:

def exportToExcel(results, headers, properties, ByteArrayOutputStream outputStream) {

    WebXlsxExporter webXlsxExporter = new WebXlsxExporter()
    webXlsxExporter.setWorksheetName("Sheet")
    webXlsxExporter.with {
        fillHeader(headers)
        add(results, properties)
        save(outputStream)
    }

    def wb = webXlsxExporter.getWorkbook()
    def row = webXlsxExporter.getSheet().getRow(0)
    makeFirstRowBold(wb, row)

    wb.write(outputStream)
}

def makeFirstRowBold(Workbook wb, Row row) {
    CellStyle style = wb.createCellStyle()
    Font font = wb.createFont()
    font.setBold(true) //Already tried with font.setBoldweight(Font.BOLDWEIGHT_BOLD)
    style.setFont(font)

    for (int i = 0; i < row.getLastCellNum(); i++) {
        row.getCell(i).setCellStyle(style)
    }
}

1 Ответ

0 голосов
/ 09 марта 2020

В случае, если это случится с кем-то еще, оказывается, что запись дважды в outputtream как-то повредила файл.

Итак, поскольку мы уже пишем в выходной поток в этой строке:

wb.write(outputStream)

Я удалил этот:

save(outputStream)

И, похоже, работает нормально .

...