Я экспортирую данные пользователя в файл excel (xlsx) через apache poi. без каких-либо ошибок я могу загрузить файл Excel, но когда я пытаюсь открыть, он всплывает с ошибкой, показывающей «мы обнаружили проблему с некоторым содержимым в Excel ....»
япри загрузке также не возникает никаких ошибок, поэтому я не могу выяснить проблему, пожалуйста, помогите мне ..
Я пробовал много вещей, я пытался закрыть файл, но я не смог найти функцию закрытиядля книги также некоторые говорят, что нам не нужно закрывать ее.
открытый класс A {
private static ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
private static class ExportUserCommandHelper {
public static FileVO createExcellSheet(ArrayList<UserVO> users) {
FileVO export = new FileVO();
// Create blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
// Create a blank sheet
XSSFSheet spreadsheet = workbook.createSheet(" User Info ");
XSSFRow row = spreadsheet.createRow((short) 1);
XSSFCellStyle style = workbook.createCellStyle();
style.setFillForegroundColor(IndexedColors.GREEN.getIndex());
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
row.createCell(0).setCellValue("User Name");
row.createCell(1).setCellValue("Email");
row.createCell(2).setCellValue("Role");
row.createCell(3).setCellValue("Status");
for (int j = 0; j < users.size(); j++) {
UserVO user = users.get(j);
UserProfileBO ubo = UserProfileBO.getUserProfile(Long.parseLong(user.getUserId()),
user.getOrganization().getShortName());
XSSFRow row1 = spreadsheet.createRow((short) j + 2);
row1.createCell(0).setCellValue(ubo.getName());
row1.createCell(1).setCellValue(ubo.getEmail());
PersonaDTO t = user.getPersona().stream().findFirst().get();
row1.createCell(2).setCellValue(t.getName());
row1.createCell(3).setCellValue(ubo.getUserStatus().toString());
}
spreadsheet.autoSizeColumn(0);
spreadsheet.autoSizeColumn(1);
spreadsheet.autoSizeColumn(2);
spreadsheet.autoSizeColumn(3);
byte[] excelBytes = byteArrayOutputStream.toByteArray();
export.setData(excelBytes);
export.setFileExtension(FileExtentions.XLSX.getValue());
export.setFileName("User_List");
try {
workbook.write(byteArrayOutputStream);
byteArrayOutputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return export;
}
}
}
мне нужно правильно открыть лист Excel, не показываясообщение об ошибке «мы обнаружили проблему с некоторым содержимым в Excel ....»