У меня возникают проблемы в моем Java-приложении, чтобы разрешить загрузку файлов XLSX.
следуя примеру, показанному в этой ссылке: Создайте файл Excel для загрузки пользователями с помощью Apache POI. Я попробовал две конфигурации для загрузки/сохранения электронной таблицы.
Сначала с файлом .XLS:
response.setContentType("application/ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=testxls.xls");
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet();
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(0);
cell.setCellValue("Some text");
ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
wb.write(outByteStream);
byte[] outArray = outByteStream.toByteArray();
OutputStream outStream = response.getOutputStream();
outStream.write(outArray);
outStream.flush();
Это работает.
Затем я попробовал файл XLSX:
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment; filename=testxls.xlsx");
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet();
XSSFRow row = sheet.createRow(0);
XSSFCell cell = row.createCell(0);
cell.setCellValue("Some text");
ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
wb.write(outByteStream);
byte[] outArray = outByteStream.toByteArray();
OutputStream outStream = response.getOutputStream();
outStream.write(outArray);
outStream.flush();
Когда я пытаюсь это сделать, я получаю сообщение: "Excel обнаружил нечитаемое содержимое в файле testxls.xlsx. Вы хотите восстановить содержимое этой книги? ...."
Несмотря на это сообщение, электронная таблица открывается нормально, но я очень хочу удалить это сообщение.
Есть идеи?
outByteStream
? - person Buhake Sindi   schedule 13.03.2013ByteArrayOutputStream
? Разве вы не можете просто сделатьwb.write(response.getOutputStream())
вместо этого? - person Buhake Sindi   schedule 13.03.2013org.apache.commons.io.output.ByteArrayOutputStream
иjava.io.ByteArrayOutputStream
- person Lucas_Mux   schedule 13.03.2013wb.write(response.getOutputStream())
, но сообщение сохраняется. - person Lucas_Mux   schedule 13.03.2013