将MultiPartFile转换为XWPFDocument

时间:2018-07-02 15:16:25

标签: java spring apache ms-word apache-poi

我需要知道如何将multipartFile转换为XWPFDocument才能将其读取为word文件(我上传的文件实际上是.docx),但是我收到错误消息:

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/poi/UnsupportedFileFormatException

这是我的代码:

@Override
  public void addReport(MultipartFile report) throws ApcException {

    try{

      File convFile = new File(report.getOriginalFilename());
      convFile.createNewFile();
      FileOutputStream fos = new FileOutputStream(convFile);
      fos.write(report.getBytes());
      fos.close();

      FileInputStream fis = new FileInputStream(convFile.getAbsolutePath());

      XWPFDocument docx = new XWPFDocument(fis);

      List<XWPFTable> tables =docx.getTables();

      invokeUpdate(ADD_REPORT,new Object[]{

                                           tables.get(0).getRow(1).getCell(0),
                                           tables.get(1).getRow(0).getCell(0),
                                           tables.get(2).getRow(0).getCell(0),
                                           tables.get(3).getRow(2).getCell(1),
                                           tables.get(4).getRow(1).getCell(1)});

    }
    catch (FileNotFoundException e){
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

}

这是我的pom.xml中的Apache依赖项:

对于Apache POI,我有以下这些:

<dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>3.7</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>3.17</version>
    </dependency>

谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您需要将apache poi版本从3.7替换为3.17。

<dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>3.17</version>
</dependency>

最新的稳定版本是Apache POI 3.17