SSM 프레임 워크를 사용하여 Excel 테이블로 Sql 데이터 내보내기 실현

SSM 프레임 워크는 Excel로 SQL 데이터 내보내기를 구현합니다.

아이디어

  1. 먼저 프런트 엔드 페이지에 내보내기 버튼을 추가 한 다음 백 엔드 컨트롤러와 상호 작용합니다.
  2. 그런 다음 해당 컨트롤러에 내보내기 기능 메서드를 작성합니다.
  3. 방법 본문 :
    • 메서드 매개 변수에 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();

    }

추천

출처blog.csdn.net/ITMuscle/article/details/109173342