Java Spring在上传到服务器(org.apache.poi)时会损坏Excel(xlsx,xls)文件

Java Spring在上传到服务器(org.apache.poi)时会损坏Excel(xlsx,xls)文件,java,excel,spring-boot,apache-poi,thymeleaf,Java,Excel,Spring Boot,Apache Poi,Thymeleaf,我正在使用spring上传Excel文件,但apache POI无法读取该文件,因为该文件已损坏或格式不同。但这只有在我上传Excel文件时才会发生。Excel文件在上传之前就打开了。Iam使用POI版本3.17 这是我的密码 HTML 代码的问题是您试图读取刚刚创建的空文件。但是您应该阅读多部分文件来创建工作簿 FileInputStream fis = new FileInputStream(fileLocation); // fis created with new file

我正在使用spring上传Excel文件,但apache POI无法读取该文件,因为该文件已损坏或格式不同。但这只有在我上传Excel文件时才会发生。Excel文件在上传之前就打开了。Iam使用POI版本3.17

这是我的密码

HTML


代码的问题是您试图读取刚刚创建的空文件。但是您应该阅读
多部分文件来创建工作簿

       FileInputStream fis = new FileInputStream(fileLocation); // fis created with new file location 
        Workbook workbook = WorkbookFactory.create(fis); //creating a workbook with an empty file
如果您试图从工作簿中读取,可以直接使用
多部分文件
对象并完成它。无需创建新的
文件

像这样做

  Workbook workbook = WorkbookFactory.create(file.getInputStream());
然后继续处理文件。如果你想把文件保存在某个地方,你可以这样做

try (FileOutputStream outputStream = new FileOutputStream("/path/to/your/file/hello.xlsx")) {
            workbook.write(outputStream);
}

为什么文件outputstream和文件inputstream指向新文件?您正在读取一个不存在的文件。不是春天把文件弄乱了
  Workbook workbook = WorkbookFactory.create(file.getInputStream());
try (FileOutputStream outputStream = new FileOutputStream("/path/to/your/file/hello.xlsx")) {
            workbook.write(outputStream);
}