如何解决XSSFWorkbook cannot be resolved to a type编译错误?
问题解决方案
1. 核心错误原因:缺少Apache POI依赖
XSSFWorkbook是Apache POI库中专门处理xlsx格式Excel文件的类,编译器提示无法解析该类型,本质是项目未引入POI相关依赖包。
Maven项目配置依赖
如果使用Maven管理项目,在pom.xml中添加以下依赖:
<!-- Apache POI 处理XLSX文件核心依赖 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.5</version> <!-- 使用最新稳定版本即可 --> </dependency>
非Maven项目手动导入
直接下载以下jar包放入项目lib目录:
- poi-ooxml-xxx.jar
- poi-xxx.jar
- commons-codec-xxx.jar
- commons-collections4-xxx.jar
- commons-math3-xxx.jar
- poi-ooxml-schemas-xxx.jar
- xmlbeans-xxx.jar
2. 代码中的其他错误修正
你的测试代码还有两处逻辑错误,必须修正才能正常运行:
错误1:System.setProperty用法错误
System.setProperty的返回值是该属性的旧值,不是你设置的新路径;且user.dir代表项目根目录系统属性,不能设置为网络URL。直接将目标文件地址赋值给filePath即可。
错误2:无法用FileInputStream读取网络文件
你提供的是OneDrive网络链接,FileInputStream仅支持读取本地文件。若要读取网络文件,需改用URL流:
URL url = new URL("https://d.docs.live.net/12e57c5f83beb2a2/Documents/Book1.xlsx"); InputStream inputStream = url.openStream();
修正后的完整代码示例
void test() throws Exception{ // 读取网络Excel文件 URL url = new URL("https://d.docs.live.net/12e57c5f83beb2a2/Documents/Book1.xlsx"); InputStream inputStream = url.openStream(); XSSFWorkbook workbook = new XSSFWorkbook(inputStream); XSSFSheet sheet = workbook.getSheet("Sheet1"); // 处理Sheet不存在的情况 if(sheet == null){ System.out.println("Sheet1不存在"); workbook.close(); inputStream.close(); return; } int rowCount = sheet.getLastRowNum() - sheet.getFirstRowNum(); System.out.println("有效行数:" + rowCount); // 关闭资源,避免内存泄漏 workbook.close(); inputStream.close(); }
3. 额外注意事项
- 确保你的OneDrive链接是公开可访问的,否则会抛出权限异常;
- 若读取本地文件,直接使用本地路径即可:
FileInputStream fileStream = new FileInputStream("C:/你的文件路径/Book1.xlsx");
内容的提问来源于stack exchange,提问作者Balaji Kolisetty
相关产品推荐
相关产品推荐

