Apache POI xlsx Ошибка «Мы обнаружили проблему с некоторым содержимым в *.xlsx. Хотите, чтобы мы попытались восстановитьJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Apache POI xlsx Ошибка «Мы обнаружили проблему с некоторым содержимым в *.xlsx. Хотите, чтобы мы попытались восстановить

Сообщение Anonymous »

Я создаю файл .xlsx с помощью Apache POI 5.2.5, отправляю массив байтов на сторону клиента и загружаю файл локально на клиентский компьютер.
При попытке открыть файл, я получаю сообщение об ошибке «Мы обнаружили проблему с некоторым содержимым в *.xlsx. Хотите, чтобы мы попытались восстановить его, насколько это возможно». При нажатии «Да» файл открывается как в Windows, так и на Mac, и все данные присутствуют, но не в виде табличного объекта. Попытка открыть файл с помощью листов Google работает без проблем, а объект таблицы имеет границу.
Проблема сохранялась и тогда, когда я пытался сохранить его непосредственно на компьютере сервера, поэтому я не Я не думаю, что проблема на стороне клиента.
Код, генерирующий массив байтов:

Код: Выделить всё

private byte[] generateExcelBytes(List data) {
try (XSSFWorkbook workbook = new XSSFWorkbook()) {
XSSFSheet sheet = workbook.createSheet("Data");

CellStyle headerStyle = workbook.createCellStyle();
Font headerFont = workbook.createFont();
headerFont.setBold(true);
headerFont.setFontHeightInPoints((short) 14);
headerStyle.setFont(headerFont);

CellStyle dataStyle = workbook.createCellStyle();
Font dataFont = workbook.createFont();
dataFont.setFontHeightInPoints((short) 12);
dataStyle.setFont(dataFont);

createTable(sheet, 0, 0, headerStyle, dataStyle, data);

// Write the workbook content to a ByteArrayOutputStream
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
workbook.write(outputStream);
return outputStream.toByteArray();
} catch (IOException e) {
logger.error("Exception when creating xlsx file for account {} CDI status tables", account.getId(), e);
}
return null;
}

private void createTable(XSSFSheet sheet, int startRow, int startCol, CellStyle headerStyle, CellStyle dataStyle, List data) {
// Create sample data (replace with your actual data generation logic)
Row headerRow = sheet.createRow(startRow);

// for each header
createCell(headerRow, startCol + X, HEADER_NAME, headerStyle);

// Create data rows
for (int i = 0; i < data.size(); i++) {
DATA_OBJECT data_object = data.get(i);
Row dataRow = sheet.createRow(startRow + i + 1);
// for each data object
createCell(dataRow, startCol, data_object.get_relevant_value, dataStyle);
}

int endRow = startRow + baseHoldings.size();
int endCol = startCol + NUM_OF_COLUMNS;

XSSFAutoFilter autoFilter = sheet.setAutoFilter(new CellRangeAddress(startRow, endRow, startCol, endCol));
for (int i = startCol; i 

Подробнее здесь: [url]https://stackoverflow.com/questions/78701282/apache-poi-xlsx-we-found-a-problem-with-some-content-in-xlsx-do-you-want-us[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»