SSM 프레임 워크는 Excel로 SQL 데이터 내보내기를 구현합니다.
아이디어
- 먼저 프런트 엔드 페이지에 내보내기 버튼을 추가 한 다음 백 엔드 컨트롤러와 상호 작용합니다.
- 그런 다음 해당 컨트롤러에 내보내기 기능 메서드를 작성합니다.
- 방법 본문 :
- 메서드 매개 변수에 HttpServletResponse 서버 응답 개체 를 추가하고 예외 클래스 IOException을 throw합니다.
- 그런 다음 Excel 파일, 시트 페이지 및 머리글 행을 만듭니다.
- 그런 다음 다운로드 테이블에 해당하는 pojo 클래스가 순회하는 목록 객체를 가져옵니다.
- 마지막으로 다운로드 중에 클라이언트가 저장 한 Excel 파일의 이름을 설정합니다.
암호
다음은 home이라는 이름의 데이터 테이블과 pojo의 예입니다.
public class ExcelController {
@Autowired
HomeServiceImpl homeService;
@RequestMapping("/home")
public void excel_home(HttpServletResponse response )throws IOException {
//设置字符集
response.setCharacterEncoding("UTF-8");
List<Home> homeList=homeService.queryAllHome();
//创建excel文件
HSSFWorkbook wb = new HSSFWorkbook();
//创建sheet页
HSSFSheet sheet = wb.createSheet("房间信息");
//创建标题行
HSSFRow titleRow = sheet.createRow(0);
titleRow.createCell(0).setCellValue("编号");
titleRow.createCell(1).setCellValue("房间号");
titleRow.createCell(2).setCellValue("房间类型");
titleRow.createCell(3).setCellValue("价格");
titleRow.createCell(4).setCellValue("状态");
titleRow.createCell(5).setCellValue("描述");
//获取需要下载表对应的pojo类
for(Home home:homeList){
HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum()+1);
dataRow.createCell(0).setCellValue(home.getId());
dataRow.createCell(1).setCellValue(home.getNum());
dataRow.createCell(2).setCellValue(home.getH_Type());
dataRow.createCell(3).setCellValue(home.getPrice());
dataRow.createCell(4).setCellValue(home.getState());
dataRow.createCell(5).setCellValue(home.getText());
}
// 设置下载时客户端Excel的名称
response.setContentType("application/octet-stream;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename="
+ new String("房间信息表".getBytes(),"iso-8859-1") + ".xls");
//创建一个流
OutputStream ouputStream = response.getOutputStream();
//写入数据
wb.write(ouputStream);
ouputStream.flush();
//关闭流
ouputStream.close();
}