Apache POI,同时使用XSSF和HSSF

时间:2010-11-24 12:40:54

标签: java apache apache-poi xssf hssf

我对Apache POI项目有疑问。

我未能在“Same Java Class”中使用XSSFHSSF。我应该下载哪个jar或者我应该将哪些工件添加到maven中?

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

我该怎么做?

4 个答案:

答案 0 :(得分:12)

尝试使用新版本的Apache POI 3.7,而不是这样做,它有SS包处理HSSF和XSSF而不用担心类型

详细信息:http://poi.apache.org/spreadsheet/index.html

答案 1 :(得分:5)

除了“标准”SS包解决方案之外,您还可以使用if statement将正确的workbook format正确加载到Workbook 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.");
}

答案 2 :(得分:0)

使用工厂代替处理xssf和hssf

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

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

答案 3 :(得分:0)

这对我有用:

    filePath = "C:\Users\user1\workspace\myproject\Excel.xlsx"
    String extension = FilenameUtils.getExtension(filePath);
    System.out.println(extension);