Java 爪哇及;ApachePOI打开工作簿引发异常

Java 爪哇及;ApachePOI打开工作簿引发异常,java,excel,apache-poi,Java,Excel,Apache Poi,下面是我的测试用例: import java.io.File; import java.io.IOException; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.junit.Before;

下面是我的测试用例:

import java.io.File;
import java.io.IOException;

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.junit.Before;
import org.junit.Test;

public class TestWB {

File sourceA;
File sourceB;

@Before
public void setUp() throws Exception {
    sourceA = new File("C:\\junit\\sourceA.xls");
    sourceB = new File("C:\\junit\\sourceB.xls");
}

@Test
public final void testValid() {
    try {
        Workbook wb = WorkbookFactory.create(sourceA);
    } catch (InvalidFormatException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

@Test
public final void testInValid() {
    try {
        Workbook wb = WorkbookFactory.create(sourceB);
    } catch (InvalidFormatException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}
在sourceA.xls经过并加载的位置,SourceB.xls将出错。以下是异常代码:

java.lang.RuntimeException: Unexpected record type (org.apache.poi.hssf.record.StringRecord)
    at org.apache.poi.hssf.record.aggregates.RowRecordsAggregate.<init>(RowRecordsAggregate.java:97)
    at org.apache.poi.hssf.model.InternalSheet.<init>(InternalSheet.java:172)
    at org.apache.poi.hssf.model.InternalSheet.createSheet(InternalSheet.java:127)
    at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:291)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:88)
    at TestWB.testInValid(TestWB.java:35)
    ...
java.lang.RuntimeException:意外的记录类型(org.apache.poi.hssf.record.StringRecord)
位于org.apache.poi.hssf.record.aggregate.RowRecordsAggregate.(RowRecordsAggregate.java:97)
位于org.apache.poi.hssf.model.InternalSheet(InternalSheet.java:172)
位于org.apache.poi.hssf.model.InternalSheet.createSheet(InternalSheet.java:127)
在org.apache.poi.hssf.usermodel.HSSFWorkbook.(HSSFWorkbook.java:291)
位于org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:88)
TestWB.testInValid(TestWB.java:35)
...
如果我打开xls-据我所知不做任何更改-保存它。这是它应该做的。 如果没有用户的手动操作(打开-保存-关闭),如何解决此问题


谢谢

您使用的是什么版本的Apache POI?有问题的Excel文件是从哪里来的?我使用的是apache poi 3.9,该文件是从外部源生成的(无法访问代码或进程)。3.10 beta 2是否修复了它?不,3.10-beta-2没有帮助,我尝试了3.8、3.9、3.10-beta。如果只加载SourceB(即不加载SourceA),它是否正常工作?您能提供您的测试XLS吗?