先引入依赖
<!--文件以excel形式导出 所需poi依赖-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
文件信息在内存完成,防止访问磁盘效率低,读写消耗资源
<a style="" class="btn btn-primary" th:href="@{'/exportAllUser'}">导出报表</a>
@RequestMapping("/exportAllUser")
public void exportAllUser(HttpServletResponse response) throws IOException {
//查询所有用户信息
List<User> usersList = userService.queryAll();
// 创建excel文件对象,文件信息存入workbook对象
HSSFWorkbook workbook = new HSSFWorkbook();
// 创建页
HSSFSheet sheet = workbook.createSheet();
// 创建 表头 行,第一行以0开始,一行有几列取决于有多少字段
HSSFRow row = sheet.createRow(0);
// 创建列,给列赋值
HSSFCell cell = row.createCell(0);
cell.setCellValue("编号");
cell = row.createCell(1);
cell.setCellValue("姓名");
cell = row.createCell(2);
cell.setCellValue("密码");
// 遍历userList,创建HSSFRow对象,生成所有的数据行
if (usersList != null && usersList.size() > 0) {
User user=null;
for (int i = 0; i < usersList.size(); i++) {
user=usersList.get(i);
//每遍历出一个用户对象,创建一行
row=sheet.createRow(i + 1);
//创建列,从对象中获取每一列数据
cell=row.createCell(0);
cell.setCellValue(user.getId());
cell=row.createCell(1);
cell.setCellValue(user.getUsername());
cell = row.createCell(2);
cell.setCellValue(user.getPassword());
}
}
//1、设置响应类型(参数HttpServletResponse) 和 设置响应头信息
//2、获取字节输出流(OutputStream对象)
response.setContentType("application/octet-stream;charset=UTF-8");
response.addHeader("Content-Disposition","attachment;filename=userList.xls");
OutputStream outputStream = response.getOutputStream();
//将workbook对象信息写入
workbook.write(outputStream);
workbook.close();
outputStream.close();
}