POI-excel

excel

原生POI

注意点

  • sheet.getRow(i); i:索引,从0开始
  • row.getCell(i);i:索引,从0开始
  • sheet.getLastRowNum(); 返回最后一行的索引值。
  • 合并单元格:wb.getSheetAt(0).addMergedRegion(new CellRangeAddress(4,8,0,0));
    合并单元格语法: 开始行、结束行、开始列、结束列,都是(0开始)

easypoi

模板导出

ExcelUtil

点击查看代码
  /**
     * 获取模板的磁盘绝对路径
     * @param request
     * @param fileName 模板名
     * @return
     */
    public static String getTempletFilePath(HttpServletRequest request,String fileName){
        return request.getSession().getServletContext().getRealPath("/")
                + File.separator + "exporttemp" +File.separator+fileName;
    }
	
	  /**
     * 封装响应流(03excel)
     *
     * @param response 响应对象
     * @param fileName 下载的文件名
     * @throws UnsupportedEncodingException 异常
     */
    public static void responseHeader(HttpServletResponse response, String fileName) throws UnsupportedEncodingException {
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        fileName = URLEncoder.encode(fileName+".xls", "utf-8");
        response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("UTF-8"), "ISO-8859-1"));
    }

controller

点击查看代码
 @RequestMapping("/export")
    @ResponseBody
    public void export(HttpServletRequest request, HttpServletResponse response) throws Exception {

        try {
            substationTripService.export(request,getLoginUser(),response);
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("导出牵引跳闸记录异常", e.getMessage());
            response.reset();
            response.setContentType("application/json");
            response.setCharacterEncoding("utf-8");
            response.getWriter().println("导出失败,系统内部错误!");
        }
    }

service

点击查看代码
 public void export(HttpServletRequest request, LoginUser loginUser, HttpServletResponse response) throws Exception {
        Map<String, Object> params = WebUtils.getParametersStartingWith(request, "");
       
        String filePath = ExcelUtil.getTempletFilePath(request, "qianyingtiaozha.xls");

        Page<SubstationTrip> page = findPage(1, 65530, params, loginUser);

        TemplateExportParams templateExportParams = new TemplateExportParams(filePath);
        Map<String, Object> map = new HashMap();
        List<SubstationTrip> list = fmtList(page);
        map.put("list", list);
        Workbook wb = ExcelExportUtil.exportExcel(templateExportParams, map);
        if (wb == null) {
            throw new Exception("error");
        }
        // 重置响应对象
        response.reset();
        ExcelUtil.responseHeader(response,"牵引跳闸记录");
        try {
            OutputStream os = response.getOutputStream();
            BufferedOutputStream bo = new BufferedOutputStream(os);
            wb.write(bo);
            bo.flush();
            bo.close();
            os.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
posted @   jf666new  阅读(70)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示