Я использую POI Apache для экспорта данных в формате excel. Импорт идет хорошо, но когда я пытаюсь открыть документ, у меня есть это сообщение «Excel столкнулся с нечитаемым содержимым в документе« toto.xls ». Хотели бы вы восстановить содержимое этой книги? Если источник этой книги надежен нажмите да. "Экспорт в Excel на Java с использованием Apache POI
Ниже Java-код экспорта первенствует
public void exportExcel() throws IOException {
// Creation workbook vide
XSSFWorkbook workbook = new XSSFWorkbook();
// Creation d'une feuille vierge
XSSFSheet sheet = workbook.createSheet("Participant");
List<toto> totoList = this.getAllToto;
int indiceMap = 2;
Map<String, Object[]> data = new TreeMap<String, Object[]>();
data.put("1", new Object[] { "name", "surname" });
for (TotoBean l : totoList) {
data.put(Integer.toString(indiceMap),
new Object[] { l.getName(), l.getSurname() });
indiceMap++;
}
// Iteration sur la map data et ecriture dans dans la feuille excel
Set<String> keyset = data.keySet();
int rownum = 0;
for (String key : keyset) {
Row row = sheet.createRow(rownum++);
Object[] objArr = data.get(key);
int cellnum = 0;
for (Object obj : objArr) {
Cell cell = row.createCell(cellnum++);
if (obj instanceof String)
cell.setCellValue((String) obj);
else if (obj instanceof Integer)
cell.setCellValue((Integer) obj);
}
}
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
String dateToday = dateFormat.format(new Date());
// Ecriture du fichier excel comme attachement
ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
workbook.write(outByteStream);
byte[] outArray = outByteStream.toByteArray();
String fileOut = "Liste-toto[" + this.getCity() + "]"
+ dateToday + ".xlsx";
HttpServletResponse response = (HttpServletResponse) FacesContext
.getCurrentInstance().getExternalContext().getResponse();
response.setContentType("application/vnd.ms-excel");
response.setContentLength(outArray.length);
response.setHeader("Content-Disposition", "attachment; filename=\""
+ fileOut + "\"");
OutputStream outStream = response.getOutputStream();
outStream.write(outArray);
outStream.flush();
outStream.close();
}
Я думаю, что XSSFSheet создает .xslx документ, а не .xls документа, – keuleJ
Спасибо за ваш ответ, но XSLX не признают первенствовать документ – Franky
К сожалению, я имею в виду XLSX конечно ... – keuleJ