SSMフレームワークを使用して、ExcelテーブルへのSQLデータのエクスポートを実現します

SSMフレームワークはExcelへのSQLデータエクスポートを実装します

アイデア

  1. 最初にエクスポートボタンをフロントエンドページに追加してから、バックエンドコントローラーと対話します。
  2. 次に、対応するコントローラーにエクスポート関数メソッドを記述します。
  3. メソッド本体:
    • メソッドパラメータにHttpServletResponseサーバー応答オブジェクトを追加し、例外クラスIOExceptionをスローします。
    • 次に、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