Apache POI,同时使用XSSF和HSSF

8

我在使用Apache POI项目时遇到了问题。

我无法在"同一个Java类中"同时使用XSSFHSSF。我应该下载哪个jar或者将哪个artifact添加到maven中呢?

我想要同时处理xlsxlsx文件。当我遇到Excel版本错误时,我会将XSSF更改为HSSFHSSF更改为XSSF

我该如何做呢?

4个回答

13

首先感谢您的帮助。我查看了您提到的页面。好的。我已经在我的pom.xml中添加了以下代码: org.apache.poi poi-contrib 3.7-beta3 然而,尽管如此,我的Java类仍然无法解析XSSFWorkbook?HSSFWorkbook()没有问题;Workbook[] wbs = new Workbook[] { new HSSFWorkbook(), new XSSFWorkbook() }; - Tim Tuckle
5
XSSFWorkbook的groupId是org.apache.poi,artifactId是poi-ooxml。 - rlovtang

6

除了“标准”的SS包解决方案外,您还可以使用if语句来正确加载正确的工作簿格式工作簿接口对象中,如下所示:

Workbook workbook; //<-Interface, accepts both HSSF and XSSF.
File file = new File("YourExcelFile.xlsx");
if (FileUtils.getFileExt(file).equalsIgnoreCase("xls")) {
  workbook = new HSSFWorkbook(new FileInputStream(file));
} else if (FileUtils.getFileExt(file).equalsIgnoreCase("xlsx")) {
  workbook = new XSSFWorkbook(new FileInputStream(file));
} else {
  throw new IllegalArgumentException("Received file does not have a standard excel extension.");
}

如果使用NPOI,则需要使用IWorkbook - Mariusz Ignatowicz

1
请使用工厂,该工厂可处理xssf和hssf。
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

Workbook wb = WorkbookFactory.create(new File("file"))

0
这对我有用:
    filePath = "C:\Users\user1\workspace\myproject\Excel.xlsx"
    String extension = FilenameUtils.getExtension(filePath);
    System.out.println(extension);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接