Когда я создаю и скачиваю файл .xlsx через apache poi. безо всяких ошибок скачать файл xlsx, но как только мы открываем, я не могу его открыть - PullRequest
0 голосов
/ 30 сентября 2019

Я экспортирую данные пользователя в файл 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 ....»

...