透過寫入實體進行匯出

XiangdxDu發表於2024-04-23
 @GetMapping("/exportScore")
    public void exportScore(HttpServletResponse response) throws Exception {
        // 從資料庫查詢出所有的資料
        List<Score> list = scoreService.getScoreAll();
        // 透過工具類建立writer 寫出到磁碟路徑
        // ExcelWriter writer = ExcelUtil.getWriter(filesUploadPath + "/使用者資訊.xlsx");
        // 在記憶體操作,寫出到瀏覽器
        ExcelWriter writer = ExcelUtil.getWriter(true);
        //自定義標題別名
        writer.addHeaderAlias("id", "使用者名稱");
        writer.addHeaderAlias("exercise_id", "運動名稱");
        writer.addHeaderAlias("score", "評分值");
        writer.addHeaderAlias("time", "評分時間");

        // 一次性寫出list內的物件到excel,使用預設樣式,強制輸出標題
        writer.write(list, true);

        // 設定瀏覽器響應的格式
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");

        // 對檔名進行URL編碼,解決中文檔名亂碼問題
        String fileName = URLEncoder.encode("運動質量評價資訊", "UTF-8");
        response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");

        // 獲取響應的輸出流
        ServletOutputStream out = response.getOutputStream();
        // 將excel內容寫出到響應流
        writer.flush(out, true);
        // 關閉輸出流和writer
        out.close();
        writer.close();

    }

相關文章