Class org.apache.poi.hssf.usermodel.HSSFWorkbook does not implement the requested interface org.apache.poi.ss.usermodel.Workbookエラー

Class org.apache.poi.hssf.usermodel.HSSFWorkbook does not implement the requested interface org.apache.poi.ss.usermodel.Workbookエラー

「Class org.apache.poi.hssf.usermodel.HSSFWorkbook does not implement the requested interface org.apache.poi.ss.usermodel.Workbook」とエラーが出たら、Apache POIのバージョンが混在している可能性があります。(確認したのは3.2と3.7)

WorkbookFactoryクラスのcreateメソッドは以下のようになっています。

public static Workbook create(InputStream inp) throws IOException, InvalidFormatException {
  if (!inp.markSupported()) {
    inp = new PushbackInputStream(inp, 8);
  }

  if (POIFSFileSystem.hasPOIFSHeader(inp)) {
    return new HSSFWorkbook(inp);
  }
  if (POIXMLDocument.hasOOXMLHeader(inp)) {
    return new XSSFWorkbook(OPCPackage.open(inp));
  }
  throw new IllegalArgumentException("Your InputStream was neither an OLE2 stream, nor an OOXML stream");
}

POI3.2のHSSFWorkbookはWorkbookインタフェースをimplementsしておらず、POI3.7ではWorkbookインタフェースをimplementsしている為発生するエラーです。

POI3.2をパスから削除すれば解決します。

コメント

タイトルとURLをコピーしました