Java: чтение файла Excel через FileDialog

Я получаю исключение IOException с приведенным ниже кодом. В чем проблема? Я хочу прочитать файл Excel xlsm и xls или xlsx через диалоговое окно filedialog после импорта, прочитать Excel и работать с ним.

public class start {

public static void main(String[] args) throws IOException, InvalidFormatException {

    JFrame yourJFrame = new JFrame();
    FileDialog fd = new FileDialog(yourJFrame, "Choose a file", FileDialog.LOAD);
    fd.setVisible(true);
    String filename = fd.getFile();
    String filepth = fd.getDirectory();

    Workbook workbook = WorkbookFactory.create(new File(filepth + filename));

    System.out.println("Workbook has " + workbook.getNumberOfSheets() + " Sheets : ");
    Iterator<Sheet> sheetIterator = workbook.sheetIterator();
    System.out.println("Retrieving Sheets using Iterator");
    while (sheetIterator.hasNext()) {
        Sheet sheet = sheetIterator.next();
        System.out.println("=> " + sheet.getSheetName());
    }
String
    DataFormatter dataFormatter = new DataFormatter();

    System.out.println("\n\nIterating over Rows and Columns using Iterator\n");
    Iterator<Row> rowIterator = sheet.rowIterator();
    while (rowIterator.hasNext()) {
        Row row = rowIterator.next();

        Iterator<Cell> cellIterator = row.cellIterator();

        while (cellIterator.hasNext()) {
            Cell cell = cellIterator.next();
            String cellValue = dataFormatter.formatCellValue(cell);
            System.out.print(cellValue + "\t");
        }
        System.out.println();
    }

    workbook.close();
}
}
JFileChooser - это компонент Swing, который следует использовать вместо FileDialog (AWT). Не уверен, что это не должно быть new File(filepth + File.separator + filename)
Joop Eggen 09.10.2018 16:20

@JoopEggen Я пробовал использовать JFileChooser, но все еще есть исключение FileNotFoundException?

Sanako-yan 09.10.2018 16:36

С JFileChooser используется getSelectedFile(). Пример кода должен быть в www. Однако я не вижу кода чтения. Проверьте и Интернет. Я должен уйти.

Joop Eggen 09.10.2018 16:43
JFileChooser fc = new JFileChooser(); int rueckwrt = fc.showOpenDialog(null); if (rueckwrt == JFileChooser.APPROVE_OPTION) { String filename = fc.getSelectedFile().getName(); String filepth = fc.getSelectedFile().getPath(); System.out.println(filename); вот что я сделал
Sanako-yan 09.10.2018 16:44

Выглядит неплохо. Таким образом, файл, вероятно, был найден обоими способами, но код apache-poi неисправен.

Joop Eggen 09.10.2018 16:46

похоже, проблема в этой строке: Workbook workbook = WorkbookFactory.create(new File(filepth + File.separator + filename));

Sanako-yan 09.10.2018 16:57
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
261
0

Другие вопросы по теме