springMVC下载Excel表格功能的大致流程

spring提供了Excel下载的封装类org.springframework.web.servlet.view.document.AbstractExcelView,在实现的时候,只需要实现写一个类继承AbstractExcelView,然后重写里面的

buildExcelDocument(Map<String, Object> model,HSSFWorkbook workbook, HttpServletRequest request,HttpServletResponse response){
}

方法。在方法中利用POI指定下载的Excel表格就可以了。

一,处理请求流程

前端页面发送请求–>后台controller–>controller获取要导入Excel的数据data,在最后返回的ModelAndView中带入继承了AbstractExcelView的类,其后spring会填充数据返回给前台下载。

二,大体实现

前台页面请求:

$.ajax({
                type: "GET",
                url: "history/toExcel",
                data:{account: account, password: password, type: web_type_identifi},
                dataType: "json",
                success: function(data) {
                    if(data.status == "success") {
                    }
                }
            });

AbstractExcelView的实现类:

import org.springframework.web.servlet.view.document.AbstractExcelView;
public class ObjectExcelViewHistory extends AbstractExcelView{

    //自己要实现的向Excel中写数据的样式
    @Override
    protected void buildExcelDocument(Map<String, Object> model,
            HSSFWorkbook workbook, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
            //利用POI实现向Excel写数据的逻辑
            //workbook代表要实现的Excel对象
            //model为从controller中获取到的数据
            }

controller处理:

@Controller
@RequestMapping(value="history")
public class history() {
    private Dao dao;
    @RequestMapping(value="toExcel")
    public ModelAndView historyToExcel() {
        ModelAndView mv = new ModelAndView();
        List<Map> dataMap = dao.findForList();
        ObjectExcelViewHistory erv = new ObjectExcelViewHistory();//AbstractExcelView的实现类
        mv = new ModelAndView(erv, dataMap);//将实现的AbstractExcelView和要导入Excel的数据放入ModelAndView的构造函数里,剩下的事就交个spring完成就好
        return mv; 
    }
}

在实现以上三部分后,前台发送ajax后就会产生类似的如下效果:
这里写图片描述

关于POI的实现,请看:http://blog.csdn.net/TYOUKAI_/article/details/78735958

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值