我使用ApachePOI用Java读写Excels的文件,但在源代码中找不到WorkbookFactory或XSSFWorkbook来读取xlsx文件。
波姆。xml:
<poi.version>3.13</poi.version>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
</dependency>
我在apachepoi的changelog中找不到任何可能导致这种行为的信息。
编辑:这里是我的实现(目前只是一个简单的方法)
public static HSSFSheet getXLSSheet(String fileName, int sheetIndex) throws IOException {
InputStream inputStream = new FileInputStream(fileName);
HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
return workbook.getSheetAt(sheetIndex);
}
我试图打开一个XLSX文件,但由于找不到其他两个类(WorkbookFactory或XSSFWorkbook),我预计会出现如下错误:
org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)
提前感谢。
XSSFWorkbook呈现在Apache POI的3.11版本中。
apachepoi的源代码
尝试使用这个版本的apache poi。
此外,它仍然存在于行李箱中:
apachepoi的源代码
我相信问题出在maven本地存储上。尝试从maven本地存储库中删除poi文件夹并重新下载依赖项。
另外,请不要忘记将所有调用从HSSFWorkbook
更改为XSSFWorkbook
,因为XLSX文件仅通过XSSFWorkbook
打开。
首先,我可以向您保证,WorkbookFactory
和XSSFWorkbook
类包含在POI-OOXML 3.13 JAR中,正如POI站点上记录的那样
$ unzip -l .m2/repository/org/apache/poi/poi-ooxml/3.13/poi-ooxml-3.13.jar | grep WorkbookFactory
6041 2015-09-22 00:22 org/apache/poi/ss/usermodel/WorkbookFactory.class
但是,正如您发布的例外说明的那样,您的代码永远不会适用于XLSX
文件,它需要更改。嗯,为了这个还有其他一些问题。。。如果你有文件,不要使用输入流
您的代码应该更像:
import java.io.File;
import org.apache.poi.ss.usermodel.*;
public static Sheet getExcelSheet(String fileName, int sheetIndex) throws IOException {
File file = new File(fileName);
Workbook workbook = WorkbookFactory.create(file);
return workbook.getSheetAt(sheetIndex);
}
这将适用于xls
和xlsx
文件,并且比使用输入流的内存更低。只要告诉maven依赖于POIooXML
jar,您就会自动获得所需的所有其他依赖项
我试图将openFiles()方法的内脏移到actionPerformed()方法中的相应位置,但仍然没有起作用。但是,在另一个人用于不同目的的代码中,showOpenDialog()方法在从actionPerformed方法内部调用的方法中工作。代码如下: 谢谢你的帮助。
问题内容: 我经常看到类似于 文件名何时会被该代码关闭? 写会更好吗 问题答案: 超出范围时将关闭。那通常是方法的结束。 是的,最好使用。 一旦有了文件对象,就可以通过调用该对象的方法来执行所有文件I / O。[…]处理完文件后,应该通过在对象上调用方法来结束与文件的连接: 在简短的脚本中,人们通常会省略此步骤,因为在垃圾回收期间回收文件对象时,Python会自动关闭文件(这在主流Python中意
我正试图用reactJS下载一个xlsx文件,但当我在下载后试图打开我的文件时,我收到了这条消息: “Excel无法打开文件‘file.xlsx’,因为文件格式或文件扩展名无效。请验证文件是否已损坏,以及文件扩展名是否与文件格式匹配。” 这是前端代码: 为什么我得到这个错误?请谁来帮帮我,我被困在这个3周 [编辑1] 我尝试下载的文件是在后端构建的,基本上我获取数据库上的值并使用Apache po
我一直在开发一个android应用程序,在这个应用程序中,我必须打开.xls和.xlsx文件以便进一步实现。在.xls的情况下,一切工作正常,但当我尝试打开.xls x文件时,它给了我异常。下面是我的代码,请帮助我解决这些异常 我正在使用的JAR: null
问题内容: 如何找到文件所在的位置? 我正在从Amazon Web Services EC2(弹性计算云)运行Ubuntu Linux服务器,但找不到我的Apache配置。 问题答案: 获取运行Apache的路径 将参数附加到路径 参考:http : //commanigy.com/blog/2011/6/8/finding-apache-configuration-file-httpd-conf
原本注释是要用的,但只要一打包就开始报错: Could not open requirements file: [Errno 2] No such file or directory: './requirements.txt' 报错很明确就是文件找不到,不过,文件是存在的,前面copy进去,为了确保文件存在: 如下强制修改成这样,用ls查看,文件存在 用一个相似结构的项目的dockerfile 结