【发布时间】:2025-11-30 16:00:01
【问题描述】:
我正在使用 servlet 将 .xls(Excel 电子表格)文件上传到服务器。我将 Apache FileUpload API 用于业务逻辑的上传部分,为了确保这部分正常工作,我已成功尝试将 .txt 文件上传到 Servlet,之后 - Apache FileUpload API,来自 servlet 端给我一个InputStream,我从中将.txt的所有内容打印到控制台上。
不起作用的部分是,当我尝试使用该InputStream 并将其转发到一种方法时,我扫描用户上传的.xls 文件并将其打印在控制台上。抛出的异常是:
java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.WorkbookFactory
尽管我在 Java 项目构建路径中添加了 poi-3.5-FINAL-20090928.jar 和 poi-ooxml-3.5-FINAL-20090928.jar,但还是会发生这种情况。应该提到的是后一个文件包含WorkbookFactory 类。
然而,当我尝试扫描本地存在于硬盘驱动器上的 .xls 文件时,我从中派生了 InputStream 并将其转发以打印 .xls 的所有单元格,它会打印出控制台上的每一行和每一列都完美无缺。有什么解决办法吗?
【问题讨论】:
-
当您扫描“本地存在”文件时,您是否在同一进程/类路径下运行?
-
另外,在您扫描之前,执行 System.out 或 Class.forName("org.apache.poi.ss.usermodel.WorkbookFactory") 的日志,并查看该类是否存在于类路径。
标签: java inputstream apache-poi