【问题标题】:Apache POI, using both XSSF and HSSFApache POI,同时使用 XSSF 和 HSSF
【发布时间】:2010-11-24 12:40:53
【问题描述】:

我对 Apache POI 项目有疑问。

我未能在“相同的 Java 类”中使用 XSSF 和 HSSF。我应该下载哪个 jar 或者我应该将哪个工件添加到 maven 中?

我想同时处理xls 和xlsx 文件。当我收到 excel 版本错误时,我会将 XSSF 更改为 HSSF 或 HSSF 更改为 XSSF。

我该怎么做?

【问题讨论】:

    标签: java apache apache-poi xssf hssf


    【解决方案1】:

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

    详情请看:http://poi.apache.org/spreadsheet/index.html

    【讨论】:

    • 首先感谢您的帮助。我检查了你提到的页面。行。我在 pom.xml 中添加了以下代码: org.apache.poipoi-contrib3.7-beta3依赖性> 但是,尽管如此,我的 Java 类仍然无法解析 XSSFWorkbook? HSSFWorkbook() 上没有问题; Workbook[] wbs = new Workbook[] { new HSSFWorkbook(), new XSSFWorkbook() };
    • XSSFWorkbook 在 groupId: org.apache.poi, artifactId: poi-ooxml
    【解决方案2】:

    除了“标准”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.");
    }
    

    【讨论】:

    • 如果使用 NPOI,IWorkbook
    【解决方案3】:

    使用同时处理 xssf 和 hssf 的工厂

    import org.apache.poi.ss.usermodel.Workbook;
    import org.apache.poi.ss.usermodel.WorkbookFactory;
    
    Workbook wb = WorkbookFactory.create(new File("file"))
    

    【讨论】:

      【解决方案4】:

      这对我有用:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-21
        • 1970-01-01
        • 2017-10-26
        • 1970-01-01
        相关资源
        最近更新 更多