博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dwz做前台页面,Jfinal后台使用前台下载excel【两种解决方案】
阅读量:6097 次
发布时间:2019-06-20

本文共 3149 字,大约阅读时间需要 10 分钟。

hot3.png

废话不说了,开始了!

 方案一:JFinal的renderFile("路径")功能

  先说说我的逻辑:

    前台页面点击请求发送到后台Controller,然后Controller层主要根据所需条件进行表格的组装,组装好上传到服务器后,然后跳转到前台直接显示下载框,下载即可。

前台jsp部分:

 
  • <%=basePath%>feedback/expFeedBack" >
    导出信息
  • Controller部分:

    public void expFeedBack(){      String time="";      int count = 0;      String mypath="";      try {       List
     list = FeedBack.dao.find("select f.id,f.content,f.datatime,f.tele from feedback f");       count = list.size();       time = DateUtil.formatDate();       String path = new File("").getAbsolutePath().replaceAll("\\\\", "/"); //获得Tomcat的默认路径       mypath = path.substring(0,path.lastIndexOf("/"))+"/webapps/3d/excel/"+time+"-"+count+"条.xlsx"; //截取字符串       FileOutputStream os = new FileOutputStream(mypath);       Workbook workBook = new SXSSFWorkbook(100); // 只在内存中保留100行记录       Sheet  sheet = workBook.createSheet();       try {        int i=0;        Row row1 = sheet.createRow(i++);        Cell  cell = row1.createCell(0);        cell.setCellValue("id");         cell = row1.createCell(1);        cell.setCellValue("反馈内容");        cell = row1.createCell(2);        cell.setCellValue("反馈时间");         cell = row1.createCell(3);        cell.setCellValue("联系方式");        cell = row1.createCell(4);        for (int j = 0; j < list.size(); j++) {         row1 = sheet.createRow(i++);         cell = row1.createCell(0);         cell.setCellValue(list.get(j).getInt("id"));         cell = row1.createCell(1);         cell.setCellValue(list.get(j).getStr("content"));         cell = row1.createCell(2);         cell.setCellValue(list.get(j).getStr("datatime"));         cell = row1.createCell(3);         cell.setCellValue(list.get(j).getStr("tele"));         cell = row1.createCell(4);        }        workBook.write(os);       }catch(Exception e){        e.printStackTrace();       }      } catch (FileNotFoundException e1) {       e1.printStackTrace();      }      //判断路径是否存在     if(new File(mypath).isFile()){        renderFile(new File(mypath));      }else{        renderNull();      }  }

    然后就愉快的可以下载了

    方案二:jsp页面做成的下载【给人以假象的感觉】

    jsp导出excel其实就是后台查询完数据放入list集合中,然后跳转到jsp,然后jsp按照规定的格式显示出来,并且前台弹出框,所以就有了jsp下载excel

    前台jsp部分:

     
  • <%=basePath%>feedback/expFeedBack" >
    导出信息
  • 然后就是后台部分:

     setAttr("feedBackList", FeedBack.dao.find("select * from feedback")); renderJsp("/admin/download.jsp");

    这里的download.jsp是我做的一个下载弹出框要弹出格式的页面,内容如下

    <%@ page contentType="application/vnd.ms-excel; charset=gbk" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%@ page language="java" pageEncoding="GBK" import="com.dxcm.common.util.*"%><% String time = DateUtil.formatDate();    String filename = new String((time).getBytes("GBK"),"ISO-8859-1");        response.setHeader("Content-disposition","attachment; filename="+filename+".xls");%>    
        
                     ID         反馈内容         反馈时间         联系方式                
                       ${f.id}          ${f.content}          ${f.datatime}          ${f.tele}                  

    这里我用的是EL表达式遍历的后台传出来的集合。

    以上代码属本人归纳总结,如有问题,还请多多指教。

    转载于:https://my.oschina.net/u/2008084/blog/371078

    你可能感兴趣的文章
    Spring AOP源码分析(三)Spring AOP中的一些基本接口及其概念
    查看>>
    Android学习笔记(10).布局管理器
    查看>>
    TOMCAT源码分析——生命周期管理(一)
    查看>>
    android材料设计语言
    查看>>
    前端技巧之如何切图
    查看>>
    C/C++中手动获取调用堆栈
    查看>>
    [LeetCode]168.Excel Sheet Column Title
    查看>>
    关于重载二义性
    查看>>
    Shell基础之-正则表达式
    查看>>
    Java程序员面试题集(86-115)
    查看>>
    PieBridge, 一个高效、小巧的基于 Bundle 的 Android 进程间通信 IPC 框架
    查看>>
    [知识图谱] 5.2-国内知识图谱相关企业和资源
    查看>>
    Git 常用命令
    查看>>
    JavaScript异步之Generator、async、await
    查看>>
    js对象
    查看>>
    讲讲吸顶效果与react-sticky
    查看>>
    iOS 启动速度优化和安装包优化简单总结
    查看>>
    前端快速入门 TCP/IP
    查看>>
    python中对文件的操作
    查看>>
    前端必须掌握的知识之Http协议基础以及发展进程
    查看>>