You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Java POI读取XLS文件失败,请求问题排查帮助

问题排查与解决方案

我来帮你梳理下这个问题的核心原因和解决办法,结合你的代码和异常信息来看,主要问题出在文件读取的对象上:

1. 最可能的根因:你读取的是ZIP压缩包,而非里面的XLS文件

你提供的链接指向的是wy_foreclosure.zip压缩包,而非直接的Excel文件。如果你的fileName变量指向的是这个ZIP包,POI会把它当作Excel格式解析,自然会抛出格式错误——毕竟ZIP的文件结构和XLS完全不兼容,这也是异常提示"Not enough data"的核心原因。

2. 具体解决步骤

方法一:手动解压后读取

  • 先把wy_foreclosure.zip解压,找到里面的XLS文件(比如wy_foreclosure.xls)
  • 修改代码中的fileName为解压后的XLS文件路径,再重新运行

方法二:代码内直接读取ZIP中的Excel文件

如果不想手动解压,可以用ZipInputStream直接读取压缩包内的XLS文件,示例代码如下:

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class ForeClosureDump {
    public static void generateStatistics() {
        String zipFilePath = "wy_foreclosure.zip"; // 你的ZIP文件路径
        try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFilePath))) {
            ZipEntry entry;
            while ((entry = zis.getNextEntry()) != null) {
                // 过滤出压缩包内的XLS文件
                if (!entry.isDirectory() && entry.getName().toLowerCase().endsWith(".xls")) {
                    try (Workbook wb = WorkbookFactory.create(zis)) {
                        // 在这里处理你的Workbook业务逻辑
                        System.out.println("成功读取Excel文件,工作表数量:" + wb.getNumberOfSheets());
                    }
                    zis.closeEntry();
                    break; // 假设压缩包内只有一个XLS文件,找到后退出循环
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        generateStatistics();
    }
}

3. 你的原代码优化点

你原代码里同时创建了FileInputStream和直接用File初始化Workbook,这是冗余操作,还可能导致资源冲突。建议只保留一种方式(比如直接传入File对象,或者用InputStream),避免不必要的资源消耗。

4. 额外验证项

  • 手动打开解压后的XLS文件,确认它能正常用Excel打开,排除文件本身损坏的可能
  • 检查POI依赖版本,建议使用稳定的新版本(比如4.1.2或5.2.3),避免旧版本的解析bug

内容的提问来源于stack exchange,提问作者Syed Rafi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:51:26