public R exportExcel(String userName, HttpServletResponse response) throws IOException { //设置文本内省 response.setContentType("application/vnd.ms-excel"); //设置字符编码 response.setCharacterEncoding("utf-8"); //操作日志记录 Operatelogs operatelogs = new Operatelogs(); //操作日志的操作用户 operatelogs.setUserName(userName); //获取所有的登录日志 QueryWrapper<Loginlogs> loginlogsQueryWrapper = new QueryWrapper<>(); loginlogsQueryWrapper.exists("SELECT * FROM loginLogs"); List<Loginlogs> loginlogsList = loginlogsService.list(loginlogsQueryWrapper); // 文件名 String fileName = "登录日志"; //文件编码格式 fileName = URLEncoder.encode(fileName, "UTF-8"); //使用EasyExcel工具写excel response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); //使用EasyExcel工具写excel EasyExcel.write(response.getOutputStream(), Loginlogs.class).sheet("logs").doWrite(loginlogsList); //操作日志内容 operatelogs.setContent("√导出登录日志成功"); //写入操作日志是否成功 if( operatelogsService.save(operatelogs)){ return R.ok().data("res", true).message("导出成功"); //信息为空,返回无数据 } else { return R.error().data("res", false).message("导出失败"); } }
时间: 2024-01-25 19:02:48 浏览: 77
这段代码的作用是导出登录日志到Excel文件,并将Excel文件作为响应返回给客户端。下面是代码的详细解释:
1. 设置响应的内容类型为 Excel 格式:
```
response.setContentType("application/vnd.ms-excel");
```
2. 设置响应的字符编码为 UTF-8:
```
response.setCharacterEncoding("utf-8");
```
3. 创建一个操作日志对象,并设置操作用户:
```
Operatelogs operatelogs = new Operatelogs();
operatelogs.setUserName(userName);
```
4. 查询所有的登录日志:
```
QueryWrapper<Loginlogs> loginlogsQueryWrapper = new QueryWrapper<>();
loginlogsQueryWrapper.exists("SELECT * FROM loginLogs");
List<Loginlogs> loginlogsList = loginlogsService.list(loginlogsQueryWrapper);
```
5. 设置要导出的文件名,并编码为 UTF-8 格式:
```
String fileName = "登录日志";
fileName = URLEncoder.encode(fileName, "UTF-8");
```
6. 设置响应头,使浏览器下载 Excel 文件:
```
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
```
7. 使用 EasyExcel 工具将数据写入 Excel 文件:
```
EasyExcel.write(response.getOutputStream(), Loginlogs.class).sheet("logs").doWrite(loginlogsList);
```
8. 记录操作日志:
```
operatelogs.setContent("√导出登录日志成功");
```
9. 将操作日志保存到数据库,并根据保存结果返回响应:
```
if (operatelogsService.save(operatelogs)) {
return R.ok().data("res", true).message("导出成功");
} else {
return R.error().data("res", false).message("导出失败");
}
```
这段代码的主要作用是将数据导出到 Excel 文件,并将文件返回给客户端下载。如果有任何问题,可以继续向我提问。
阅读全文