使用SSM框架实现Sql数据导出成Excel表

SSM框架实现SQL数据导出Excel

思路

  1. 首先在前端页面中添加一个导出功能的button,然后与后端controller进行交互。
  2. 接着在相应的controller中编写导出功能方法。
  3. 方法体:
    • 在方法参数中添加 HttpServletResponse服务器响应对象,在抛出一个异常类 IOException 。
    • 接着创建Excel文件、sheet页、标题行。
    • 然后获取需要下载表对应的pojo类遍历的list对象。
    • 最后设置下载时客户端保存的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