//导出resource下的excel模板
@GetMapping("/export-template")
@ApiOperationSupport(order = 9)
@ApiOperation(value = "导出模板", notes = "导出模板")
public void exportHaijunPingdingTemplate(HttpServletResponse response) {
try {
// 读取resource下的excel/测试.xlsx
ClassPathResource resource = new ClassPathResource("excel/测试.xlsx");
InputStream inputStream = resource.getInputStream();
Workbook workbook = new XSSFWorkbook(inputStream);
// 设置响应头,以附件形式下载
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment;filename*=utf-8'zh_cn'" + URLEncoder.encode(resource.getFilename(), "UTF-8"));
OutputStream outputStream = response.getOutputStream();
workbook.write(outputStream);
workbook.close();
outputStream.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
-
整体功能概述
- 这个 Java 方法的主要功能是从项目的
resource
目录下读取一个 Excel 模板文件(这里是excel/测试.xlsx
),然后将这个 Excel 文件作为附件导出,供用户下载。
- 这个 Java 方法的主要功能是从项目的
-
代码详细解释
-
方法定义与注解部分
-
@GetMapping("/export - template")
:这是一个 Spring 框架中的注解,表示这个方法会处理HTTP GET
请求,请求的路径为/export - template
。 -
@ApiOperationSupport(order = 9)
和@ApiOperation(value = "导出模板", notes = "导出模板")
:这两个注解可能是用于 Swagger 等 API 文档生成工具的,用于描述这个 API 的顺序、名称和功能等信息。
-
-
方法体部分
-
读取 Excel 文件
-
ClassPathResource resource = new ClassPathResource("excel/测试.xlsx");
:使用ClassPathResource
来定位resource
目录下的excel/测试.xlsx
文件。ClassPathResource
是 Spring 框架提供的一个类,它可以方便地从类路径(classpath
)下加载资源文件。 -
InputStream inputStream = resource.getInputStream();
:获取excel/测试.xlsx
文件的输入流。这样就可以读取这个文件的内容了。 -
Workbook workbook = new XSSFWorkbook(inputStream);
:这里使用Apache POI
库中的XSSFWorkbook
类来创建一个Workbook
对象,XSSFWorkbook
用于处理.xlsx
格式的 Excel 文件。通过传入inputStream
,将 Excel 文件的内容加载到Workbook
对象中,这样就可以对 Excel 文件的内容进行操作了。
-
-
设置响应头,准备文件下载
-
response.setContentType("application/vnd.openxmlformats - officedocument.spreadsheetml.sheet");
:设置HTTP
响应的内容类型为.xlsx
格式的 Excel 文件类型,这样浏览器就能识别返回的内容是一个 Excel 文件。 -
response.setHeader("Content - Disposition", "attachment;filename* = utf - 8'zh_cn'" + URLEncoder.encode(resource.getFilename(), "UTF - 8"));
:设置Content - Disposition
头信息,表示这是一个附件(attachment
),并且指定了文件名。这里通过URLEncoder.encode
对文件名进行UTF - 8
编码,以确保文件名在不同的环境下正确显示。
-
-
将 Excel 内容写入响应流
-
OutputStream outputStream = response.getOutputStream();
:获取HTTP
响应的输出流,用于将 Excel 文件的内容写回给客户端(浏览器)。 -
workbook.write(outputStream);
:使用Workbook
对象(这里是XSSFWorkbook
)将 Excel 文件的内容写入到outputStream
中,这样客户端就能接收到 Excel 文件的内容了。
-
-
关闭资源
-
workbook.close();
:关闭Workbook
对象,释放相关的资源,如内存中的 Excel 文件结构信息等。 -
outputStream.close();
:关闭HTTP
响应的输出流。 -
inputStream.close();
:关闭读取 Excel 文件的输入流。
-
-
读取 Excel 文件
-
异常处理部分
-
catch (IOException e)
:捕获在文件读取、写入和流操作过程中可能出现的IOException
异常,并通过e.printStackTrace();
打印异常堆栈信息。这是一种简单的异常处理方式,在实际生产环境中,可能需要更完善的异常处理逻辑,比如向客户端返回特定的错误信息。
-
-
方法定义与注解部分