我的应用程序处理Excel文件;但是当打开xlsx Excel格式时,它给了我以下错误。是否有什么我做错了或我遗漏了什么?。下面是代码和错误堆栈跟踪;我已经追踪到错误的来源:
myExcelBook = new XSSFWorkbook(new FileInputStream(f));
myExcelSheet = ((XSSFWorkbook) myExcelBook).getSheetAt(0);
异常堆栈跟踪:
Caused by: java.io.CharConversionException: Characters larger than 4 bytes are not supported: byte 0x8f implies a length of more than 4 bytes
at org.apache.xmlbeans.impl.piccolo.xml.UTF8XMLDecoder.decode(UTF8XMLDecoder.java:162)
at org.apache.xmlbeans.impl.piccolo.xml.XMLStreamReader$FastStreamDecoder.read(XMLStreamReader.java:762)
at org.apache.xmlbeans.impl.piccolo.xml.XMLStreamReader.read(XMLStreamReader.java:162)
at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.yy_refill(PiccoloLexer.java:3477)
at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.yylex(PiccoloLexer.java:3962)
at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yylex(Piccolo.java:1290)
at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yyparse(Piccolo.java:1400)
at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.parse(Piccolo.java:714)
at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3479)
at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1277)
at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1264)
at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:345)
at org.openxmlformats.schemas.spreadsheetml.x2006.main.SstDocument$Factory.parse(Unknown Source)
at org.apache.poi.xssf.model.SharedStringsTable.readFrom(SharedStringsTable.java:119)
at org.apache.poi.xssf.model.SharedStringsTable.<init>(SharedStringsTable.java:106)
at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67)
... 61 more
我想从xlsx文件中获取列数和单元格数据,以便在应用程序中进行处理,但是当我在JavaFx应用程序中加载该文件时,出现错误,应用程序冻结。
1条答案
按热度按时间ttcibm8c1#
这里的问题是,我使用的是过时版本的apache poi和XML beans库。通过升级到apache poi****版本5.2.3,org.apache.xmlbeans****版本5.1.1和poi-ooxml****版本5.2.3,我能够打开xlsx文件。此外,我在打开一个较大的xlsx文件时遇到以下错误。错误:
在声明Workbook和其他变量以打开xlsx文件之前,我使用下面的行修复了错误:**IOUtils.setByteArrayMaxOverride(100000000);**插图在这里: