Я использую Apache POI 3.12
(SXSSF
) для создания файлов .xlsx
. Проблема заключается в том, что я делаю поколение и когда я открываю файл, я получаю сообщение об ошибке:Генерация Excel, нечитаемый контент
Excel найти не удается прочитать содержимое в file.xlsx. Вы хотите восстановить содержание этой книги? Если вы доверяете источнику этой книги , нажмите «Да».
После нажатия Yes
, файл открывается, и я получаю это уведомление
Excel завершена проверка и ремонт на уровне файлов. Некоторые части этой книги , возможно, были отремонтированы или отброшены. Удалены отчеты: Комментарии от /xl/comments1.xml части (Комментарии) Исправленные отчеты: Комментарии от /xl/comments1.xml части (Комментарии)
После этого я разархивировать файл первенствовать и проверить comments1.xml
, Все мои комментарии присутствуют. Все 216 из них.
раздел кода, который генерирует комментарии имеет следующий
String comment = _propertiesHolder.getComment();
String commentAuthor = _propertiesHolder.getCommentAuthor();
if(comment != null)
{
int colIndex = cell.getColumnIndex();
int rowIndex = cell.getRowIndex();
CreationHelper helper = _workbook.getCreationHelper();
ClientAnchor anchor = helper.createClientAnchor();
anchor.setCol1(colIndex);
anchor.setCol2(colIndex + 1);
anchor.setRow1(rowIndex);
anchor.setRow2(rowIndex + 3);
// Create the comment and set the text+author
Comment cellComment = _drawingPatriarch.createCellComment(anchor);
if(commentAuthor != null)
{
cellComment.setAuthor(commentAuthor);
RichTextString rs = helper.createRichTextString(commentAuthor + ": " + comment);
cellComment.setString(rs);
}
else
{
cellComment.setString(helper.createRichTextString(comment));
}
cellComment.setRow(rowIndex);
cellComment.setColumn(colIndex);
// Assign the comment to the cell
cell.setCellComment(cellComment);
}
У вас есть какие-либо идеи, что может быть причиной этой проблемы? Хотя информация не была потеряна, очевидно, что что-то не так, и я хотел бы ее исправить. Комментарии извлекаются из базы данных(). Самый большой комментарий - 138 символов.
Update
Что-то, что я забыл упомянуть. Я также запускаю то же извлечение, используя hssf
, и ошибок не было. Было бы безопасным предположением, что данные не являются проблемой.
Вы делаете это за один комментарий или добавляете несколько комментариев? – Gagravarr
Несколько комментариев, всего 216. Одна электронная таблица. – alkis
Почему вы каждый раз создаете нового Патриарха рисунка? В соответствии с [предупреждением в javadocs] (https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Sheet.html#createDrawingPatriarch%28%29), это может удалить любые существующие каждый раз, когда вы это называете! – Gagravarr