Чтение данных из 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);