java.lang.ClassNotFoundException:org.apache.xmlbeans.XmlException

java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlException

为了读取我正在使用apache POI的xlsx文件,我下载了zip文件并将以下jsrs放置在servlet位置webcontent/web-inf/lib中,并通过eclipse配置了构建路径

enter image description here

我的代码如下所示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

File uploadedFile = new File(fpath, fileName);
item.write(uploadedFile);
String mimeType = (Files.probeContentType(uploadedFile.toPath())).toString();
System.out.println(mimeType);
if(mimeType.equals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"))
{
FileInputStream file = new FileInputStream(uploadedFile);
    XSSFWorkbook workbook = new XSSFWorkbook(file);
    for (int i =0; i < workbook.getNumberOfSheets(); i++)
    {
       XSSFSheet sheet = workbook.getSheetAt(i);
       Iterator<Row> row = sheet.iterator();
       while(row.hasNext()) {
   Iterator<Cell> cellIterator = ((Row) row).cellIterator();
       while(cellIterator.hasNext()) {
       Cell cell1 = cellIterator.next();
       switch(cell1.getCellType())
         {
    case Cell.CELL_TYPE_BOOLEAN:
    System.out.print(cell1.getBooleanCellValue() +"
"
);
    break;
    case Cell.CELL_TYPE_NUMERIC:
    System.out.print(cell1.getNumericCellValue() +"
"
);
    break;
    case Cell.CELL_TYPE_STRING:
    System.out.print(cell1.getStringCellValue() +"
"
);
    break;
    }
     }

尽管这没有显示并且在eclipse上出现错误,但是当我尝试运行代码时却显示了以下错误

enter image description here

我怎么了 如何解决呢?


您需要将XML bean依赖项添加到类路径中。

该库通常称为xmlbeans-x.x.x.jar


我已经下载了最新的poi-3.17二进制文件,并且xmlbeans-x.x.x.jar包含在下载的程序包中。

附上截图FYR。

Primary jars required for xlsx
xmlbeans-x.x.x.jar under the folder ooxml-lib


将xmlbeans-xpath.jar添加到您的库中。


似乎您可能正在尝试使用旧格式的POI版本生成Office 2007格式。 将poi-ooxml jar用于新格式。