Чтение данных из xlsm-файла только для чтения с использованием Java Apache POI

Я пытаюсь прочитать данные из xlsm только для чтения, используя java apache poi, но когда я использую книгу XSSF, кажется, что она не может получить доступ к файлу, а книги HSSF работают только для файлов xls. Мой код выглядит так:

try {
                FileInputStream file = new FileInputStream(new File("file.xlsm"));
                System.out.println("found file");
                XSSFWorkbook workbook = new XSSFWorkbook(file);
                System.out.println("in workbook");
                XSSFSheet sheet = workbook.getSheet("Shipments");
                System.out.println("got sheet");

Код никогда не доходит до строки печати "в книге", и я не знаю почему. Пожалуйста помоги!

2 ответа

Решение

Я скопировал ваш код и дал файлу правильный путь, и он работал.

Моя версия:

 FileInputStream file = new FileInputStream(new File("C:\\Users\\user\\Desktop\\filet.xlsm"));
        System.out.println("found file");
        XSSFWorkbook workbook = new XSSFWorkbook(file);
        System.out.println("in workbook");
        XSSFSheet sheet = workbook.getSheet("Shipments");
        System.out.println("got sheet");

Я думаю, что это как-то связано с вашим путем или самим файлом.

Версия 4.0.0 имеет класс фабрики рабочих книг с логическим параметром "только для чтения". Итак, чтобы открыть в режиме только для чтения...

XSSFWorkbook nextWorkbook = XSSFWorkbookFactory.createWorkbook(myFile, true);
Другие вопросы по тегам