Путь к файлу Java не найден для таблицы Excel - PullRequest
0 голосов
/ 29 июня 2018

Итак, я пытаюсь напечатать первую строку файла Excel, но по какой-то странной причине он не может найти файл, когда он находится на моем рабочем столе. Вот код, который я написал:

public class ReadExcel {
    public static void main(String[] args) throws FileNotFoundException, IOException {
        File fileName=new File(System.getProperty("user.home"), "/Desktop/cc2017.xls");

        HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileName)); //ERROR HERE

        HSSFSheet sheet = workbook.getSheetAt(0);
        HSSFRow row = sheet.getRow(0);

        System.out.println(sheet.getRow(0).toString());
    }
}

Вот сообщение, отображаемое на консоли:

Исключение в потоке "main" java.io.FileNotFoundException: \ Desktop \ cc2017.xls (система не может найти указанный путь) в java.io.FileInputStream.open0 (собственный метод) at java.io.FileInputStream.open (Неизвестный источник) at java.io.FileInputStream. (Неизвестный источник) at java.io.FileInputStream. (Неизвестный источник) в ReadExcel.main (ReadExcel.java:14)

Строка, на которую указывает ошибка:

HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileName)); 

Вот свидетельство того, что файл существует:

cc2017.xls File]

Вы видите, что у меня есть простой путь к файлу, и файл является файлом Excel с данными на нем, но по какой-то причине он не обнаруживается. Любые предложения приветствуются.

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Как вы указали путь, приложение смотрит в свой рабочий каталог, например, если ваш workspace находится в E:/Workspace/Your App, тогда приложение ищет файл в E:/Workspace/Your App/Desktop/cc2017.xls.

Используйте это, чтобы получить файл от Deskop

new File(System.getProperty("user.home"), "/Desktop/cc2017.xls")

Обновление в вашем коде

//NPOIFSFileSystem fs = new NPOIFSFileSystem(new File("cc2017.xls"));

        String fileName="/Desktop/cc2017.xls";
        HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(new File(System.getProperty("user.home"), fileName))); //ERROR HERE

        HSSFSheet sheet = workbook.getSheetAt(0);
        HSSFRow row = sheet.getRow(0);

        System.out.println(sheet.getRow(0).toString());

Пример программы для тестирования

public static void main(String... args) {
    String fileName = "/Desktop/cc2017.xls";
    File file = new File(System.getProperty("user.home"), fileName);
    System.out.println("file: " + file);
    System.out.println("file exists: " + file.exists());
    HSSFWorkbook hssfWorkbook = new HSSFWorkbook(new FileInputStream(file));
    HSSFSheet sheet = hssfWorkbook.getSheetAt(0);
    HSSFRow row = sheet.getRow(0);
    System.out.println(row.toString());
}

Я создал файл на рабочем столе с тем же именем и посмотрел полученный результат

file: C:\Users\CHIRAG GUPTA\Desktop\cc2017.xls
file exists: true
org.apache.poi.hssf.usermodel.HSSFRow@35f983a6
0 голосов
/ 29 июня 2018

Щелкните правой кнопкой мыши по файлу и проверьте абсолютный путь. и используйте это в своей программе. Например, D: /DavidFiles/testing.xlsx Вот так.

так что если ваш файл находится на рабочем столе, то путь будет примерно таким: C: //Users//Desktop/cc2017.xls

...