项目中有需要下载excel模板的功能,所以考虑将模板放在resources下面,当做静态文件。但是在网上搜了一下读取resources静态文件感觉写的都不是很好,故重新整理一份供参考,如果有更好的写法各位可以指出!
模板定义为a.xlsx
定义返回参数
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "ExcelVO", description = "导出Excel时使用的通用VO")
public class ExcelVO implements Serializable {
/**
* Excel数据
*/
@ApiModelProperty(value = "Excel数据")
protected byte[] excelData;
}
具体代码
@ApiOperation("导出模板")
@GetMapping("/export/template")
public ResponseData<ExcelVO> exportTemplate() {
ExcelVO excelVO = new ExcelVO();
InputStream inputStream = null;
ByteArrayOutputStream outputStream = null;
try {
ClassPathResource classPathResource = new ClassPathResource("template/a.xlsx");
inputStream = classPathResource.getInputStream();
outputStream = new ByteArrayOutputStream();
StreamUtils.copy(inputStream, outputStream);
excelVO.setExcelData(outputStream.toByteArray());
return new ResponseUtil<ExcelVO>().setData(excelVO);
} catch (IOException e) {
throw new ServiceException("下载失败");
} finally {
IOUtils.closeQuietly(inputStream);
IOUtils.closeQuietly(outputStream);
}
}