8

我对 Apache POI 项目有疑问。

我没有在"Same Java Class"XSSF中使用and 。我应该下载哪个 jar 或者我应该将哪个工件添加到 maven 中?HSSF

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

我怎样才能做到这一点?

4

4 回答 4

13

与其这样做,不如尝试使用新版本的 Apache POI 3.7,它有 SS 包,可以同时处理 HSSF 和 XSSF 而无需担心类型

详情在这里: http: //poi.apache.org/spreadsheet/index.html

于 2010-11-24T13:15:42.137 回答
6

除了“标准”SS 包解决方案之外,您还可以简单地使用 anif statement将权限正确加载workbook formatWorkbook interface对象中,如下所示:

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.");
}
于 2012-08-15T15:45:29.233 回答
1

改用处理 xssf 和 hssf 的工厂

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

Workbook wb = WorkbookFactory.create(new File("file"))
于 2018-01-29T14:27:13.627 回答
0

这对我有用:

    filePath = "C:\Users\user1\workspace\myproject\Excel.xlsx"
    String extension = FilenameUtils.getExtension(filePath);
    System.out.println(extension);
于 2018-04-27T07:23:14.833 回答