1

我正在使用 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 的所有单元格.xls,它会在控制台上完美地打印出每一行和每一列的单元格。有什么解决办法吗?

4

2 回答 2

2

您正在使用 Apache Commons FileUpload,这意味着您正在使用 Web 应用程序。/WEB-INF/lib您是否像通常应该为任何第三方库所做的那样将库放在 webapp 的文件夹中?您不需要对 Java 项目构建路径做任何事情。Eclipse 将自动/WEB-INF/lib在构建路径中获取任何库,并且 web 应用程序一旦部署,默认情况下将在类路径中获取这些库。

如果这没有帮助,那么请确保您在类路径中没有其他地方的旧版本 POI,这可能会在类加载中卷曲。这包括除了/WEB-INF/lib每个应用服务器下的 webapp /lib(可能还有其他,取决于 make/version/configuration,请参阅文档以获取详细信息)和 JRE 的/lib. 如果那里有旧的 POI 版本,您需要先删除它们。实际上,这些文件夹不应该包含任何 3rd 方 webapp 特定的库,它只会使类路径混乱。

于 2009-11-25T02:11:04.687 回答
0

解决方案非常简单:

  1. 下载此链接中的所有 jar 文件http://archive.apache.org/dist/poi/release/bin/poi-bin-3.9-20121203.zip
  2. 提取文件并将所有 jar 文件复制到项目中的“\WebContent\WEB-INF\lib\”。请注意:您必须将其复制并粘贴到您在 ECLIPSE 中的项目中,不要通过 Windows 资源管理器复制粘贴它或将其作为外部 JAR 放置在 java 构建路径中,因为它永远不会起作用。

就是这样,你完成了.. :D 如果这能解决你的问题,请告诉我..

于 2013-08-06T18:25:31.793 回答