【问题标题】:Read data from read only xlsm file using Java Apache POI使用 Java Apache POI 从只读 xlsm 文件中读取数据
【发布时间】:2014-06-19 23:16:08
【问题描述】:

我正在尝试使用 java apache poi 从只读 xlsm 读取数据,但是当我使用 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");

代码永远不会到达“in workbook”打印行,我不知道为什么。请帮忙!

【问题讨论】:

  • 抛出什么异常?
  • 无,程序只是继续运行,但从不做任何事情
  • @ajs 这听起来像是您实际上捕获并吞下了异常。我对你的 catch 块中的内容很感兴趣...

标签: java file-io apache-poi xlsx


【解决方案1】:

4.0.0 版有一个带有布尔“只读”参数的工作簿工厂类。 所以,要以只读模式打开...

XSSFWorkbook nextWorkbook = XSSFWorkbookFactory.createWorkbook(myFile, true);

【讨论】:

    【解决方案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");
    

    您的引用似乎有问题。因此在您尝试创建文件资源时检查您引用文件的方式

    【讨论】:

    • 我正在访问的文件是网络文件,您认为这会导致问题吗?
    • 我尝试了相同的代码,但我得到了以下 java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException。如果您有任何线索,请帮助我
    • @user1047873 - xmlbeans-2.X.X.jar 在你的类路径中吗?
    猜你喜欢
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    相关资源
    最近更新 更多