【问题标题】:Java File Path Not found for excel spreadsheet未找到 Excel 电子表格的 Java 文件路径
【发布时间】:2018-06-29 12:33:27
【问题描述】:

所以我试图打印一个 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());
    }
}

这是控制台上显示的消息:

线程“主”java.io.FileNotFoundException 中的异常: \Desktop\cc2017.xls(系统找不到指定的路径) 在 java.io.FileInputStream.open0(本机方法) 在 java.io.FileInputStream.open(未知来源) 在 java.io.FileInputStream.(未知来源) 在 java.io.FileInputStream.(未知来源) 在 ReadExcel.main(ReadExcel.java:14)

错误指向的行是:

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

这是文件存在的证据:

您可以看到我有一个简单的文件路径,该文件是一个带有数据的 excel 文件,但由于某种原因它没有被发现。任何建议都非常感谢。

【问题讨论】:

  • 请指定您使用的操作系统。
  • A 文件未找到预期
  • 我在询问您正在使用的操作系统(Windows、Linux、iOS 等)
  • 抱歉,我使用的是 Windows 10
  • 好的,所以你需要文件的实际路径。如,D:/DavidFiles/testing.xlsx 像这样。因此,如果您的文件在桌面上,那么路径将类似于 C://Users//Desktop/cc2017.xls

标签: java excel apache-poi


【解决方案1】:

按照您提供路径的方式,应用程序正在其工作目录中查找,例如如果您的 workspaceE:/Workspace/Your App 中,那么应用程序正在 E:/Workspace/Your App/Desktop/cc2017.xls 中查找文件。

使用这个从桌面获取您的文件

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

【讨论】:

  • 我现在已将路径更改为我的问题中的正确路径,但我仍然遇到同样的错误
  • 文件:C:\Users\User\Desktop\cc2017.xls 文件存在:false 线程“主”java.io.FileNotFoundException 中的异常:C:\Users\User\Desktop\cc2017.xls (系统找不到指定的文件)在 java.io.FileInputStream.open(Unknown Source) 在 java.io.FileInputStream.(Unknown Source) 在 ReadExcel 的 java.io.FileInputStream.open0(Native Method)。 main(ReadExcel.java:16)
  • 这很奇怪,因为文件在那里
  • 请点击windows的URL bar在此处添加完整路径
  • 感谢它现在工作的帮助。之所以不能正常工作是因为该文件应该在文件系统中的eclipse项目中,而这是项目指向的地方。
【解决方案2】:

右键单击文件并检查绝对路径。并在你的程序中使用它。 如,D:/DavidFiles/testing.xlsx 像这样。

所以如果您的文件在桌面上,那么路径将类似于 C://Users//Desktop/cc2017.xls

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 2013-05-03
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    相关资源
    最近更新 更多