spring下载excel文件

wpx232ag  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(586)

我有以下控制器下载excel文件。该文件已下载,但当我打开它时,我得到“该文件已损坏,无法打开。”。我的控制器出了什么问题?

@ApiOperation(value = "export ontology")
@RequestMapping(value = "/export/{ontologyId}", method = RequestMethod.GET)
public ResponseEntity<InputStreamResource> exportExcel(@PathVariable Long ontologyId) throws FileNotFoundException {

    HttpHeaders headers = new HttpHeaders();
    headers.add("Content-Description", "File Transfer");
    headers.add("Content-Disposition", "attachment; filename=pfizer_polish_ontology.xlsx");
    headers.add("Content-Transfer-Encoding", "binary");
    headers.add("Connection", "Keep-Alive");
    headers.setContentType(
            MediaType.parseMediaType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"));

    File file = new File("C:\\ttt\\pfizer_polish_ontology.xlsx");

    InputStreamResource isr = new InputStreamResource(new FileInputStream(file));
    return ResponseEntity.ok().contentLength(file.length()).headers(headers).body(isr);
}

我想添加一个重要的细节,我正在使用swagger接口来restapi
使用 Postman (保存和下载)我能够下载文件,这是很好的。所以问题似乎只是在使用swagger接口时

xbp102n0

xbp102n01#

我打赌你的内容类型与excel格式不匹配。以下内容就足够了:

contentType("application/csv")

不管怎样,我建议你看一下描述mime类型的网页。就我所见,格式xsl(x)将与所有这些最佳匹配:

application/excel
application/vnd.ms-excel
application/x-excel
application/x-msexcel
pdtvr36n

pdtvr36n2#

这是我在xlsx文档中使用的:

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

相关问题