2

I'm currently trying to read an .xls file from java that has the character '°' in the first row but i'm getting an error on the HSSFWorkbook constructor.

FileInputStream fileInputStream = new FileInputStream(new File(path));
HSSFWorkbook workbook = new HSSFWorkbook(fileInputStream);

I'm getting :

org.apache.poi.hssf.record.LabelRecord cannot be cast to java.lang.Comparable

If i delete the character '°' everything works fine.

The full stacktrace:

java.lang.ClassCastException: org.apache.poi.hssf.record.LabelRecord cannot be cast to java.lang.Comparable
    at java.util.TreeMap.put(Unknown Source)
    at org.apache.poi.hssf.record.aggregates.ValueRecordsAggregate.insertCell(ValueRecordsAggregate.java:65)
    at org.apache.poi.hssf.record.aggregates.ValueRecordsAggregate.construct(ValueRecordsAggregate.java:130)
    at org.apache.poi.hssf.model.Sheet.createSheet(Sheet.java:210)
    at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:172)
    at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:210)
    at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:191)
    at adp.servlet.UploadPPIPServlet.readExcel(UploadPPIPServlet.java:342)
    at adp.servlet.UploadPPIPServlet.process(UploadPPIPServlet.java:87)
    at frmw.BaseServlet.doPost(BaseServlet.java:283)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:612)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:503)
    at java.lang.Thread.run(Unknown Source)
Stefano
  • 21
  • 3
  • 1
    what is POI lib version? – Oleks Jun 22 '19 at 09:52
  • @user:11684443 v3.7 works without troubles ``` @Test public void testSpecialCharHSSFWorkbook() throws IOException { final HSSFWorkbook workbook = new HSSFWorkbook(getClass().getResourceAsStream("test.xls")); final Sheet sheet = workbook.getSheetAt(0); final CellReference cellReference = new CellReference("A1"); final Row row = sheet.getRow(cellReference.getRow()); final Cell cell = row.getCell(cellReference.getCol()); assertEquals("C°", cell.getStringCellValue()); } ``` – Oleks Jun 22 '19 at 10:43
  • 1
    Please show the full stacktrace so we see what tries casting `LabelRecord` to `Comparable`. – Axel Richter Jun 22 '19 at 11:06
  • Sorry for the late reply but i was away for the weekend. @oleksandr The POI lib version is 2.5.1, i'm going to upgrade it and try your solution. – Stefano Jun 24 '19 at 07:34
  • It is working with v3.7, thanks @Oleksandr. This is my first question and don't know how to mark you answer or my question as resolved :S. – Stefano Jun 24 '19 at 08:43
  • @Stefano Glad it works. :) It was not answer but comment so no sense to accept it. Could you please tell us the buggy lib version to investigate the reason why the issue occurs? – Oleks Jun 24 '19 at 08:59
  • @Oleksandr I see. The POI lib version i was using was 2.5.1, thank you again for your time! Have a great day! – Stefano Jun 24 '19 at 09:26
  • The `apache poi` version `2.5.1` is from 2004. `Apache poi` is in development extensively. Versions older than one year are ancient. So using such ancient versions is like using copper chisels instead of steel chisels. And if you already update, then on a current version. Version `3.7` is ancient too. The latest stable release is `apache poi 4.1.0` See https://poi.apache.org/download.html. – Axel Richter Jun 24 '19 at 09:46

0 Answers0