1:通过自定义的View视图可以让请求直接到一个Excel表去。

2:自定义的视图必须继承  AbstractXlsView /AbstractXlsxView / AbstractXlsxStreamingView其中的一个抽象类,并实现buildExcelDocument方法;

3:如果使用的org.springframework.web版本比较老,继承的是AbstractExcelView类,所以说这个类已经过时了。


具体实现:

1.使用Maven或者Gradle导包,这里以Gradle为例。

dependencies {
compile group: 'org.springframework', name: 'spring-webmvc', version: '5.0.4.RELEASE'
compile group: 'org.springframework', name: 'spring-context', version: '5.0.5.RELEASE'
compile group: 'org.springframework', name: 'spring-web', version: '5.0.5.RELEASE'
compile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
compile group: 'javax.servlet', name: 'jsp-api', version: '2.0'
/*poi生成Excel*/
compile group: 'org.apache.poi', name: 'poi', version: '4.0.1'
compile group: 'org.apache.poi', name: 'poi-ooxml', version: '4.0.1' testCompile group: 'junit', name: 'junit', version: '4.12'
}

2.创建一个类:

ViewExcel

import com.lwj.pojo.User;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.web.servlet.view.document.AbstractXlsxView; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.util.List;
import java.util.Map; public class ViewExcel extends AbstractXlsxView {
@Override
protected void buildExcelDocument(Map<String, Object> model, Workbook workbook, HttpServletRequest request, HttpServletResponse response) throws Exception {
String fileName = "账号列表.xlsx";
response.setCharacterEncoding("UTF-8");
response.setContentType("application/ms-excel");// 文件下载
response.setHeader("Content-Disposition", "inline; filename=" + new String(fileName.getBytes(), "iso8859-1"));
OutputStream outputStream = response.getOutputStream(); Sheet sheet = workbook.createSheet("账号表"); Row row = sheet.createRow(0); //设置标头
String[] headers = new String[] { "编号", "姓名","密码","年龄" };
for (int i = 0; i < headers.length; i++) {
row.createCell(i).setCellValue(headers[i]);
} List<User> list = (List<User>) model.get("userlist");
for (int i = 0; i < list.size(); i++) {
User user = list.get(i); row = sheet.createRow(i + 1);
row.createCell(0).setCellValue(i + 1);
row.createCell(1).setCellValue(user.getName());
row.createCell(2).setCellValue(user.getPassWord());
row.createCell(3).setCellValue(user.getAge());
} workbook.write(outputStream);
outputStream.flush();
outputStream.close();
}
}

3.配置自定义视图解析器

 <!-- 注册excel视图解析器 -->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/> <bean id="exportExcel" class="com.lwj.custom.view.ViewExcel"/>

4.控制器

package com.lwj.controller;

import com.lwj.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping; import java.util.ArrayList;
import java.util.List; @Controller
@RequestMapping("user")
public class UserController { @RequestMapping("excel")
public String viewExcel(ModelMap map){
List<User> list = new ArrayList<>(); User user = new User();
user.setName("zs1");
user.setPassWord("12345");
user.setAge(27);
list.add(user); user = new User();
user.setName("zs2");
user.setPassWord("12346");
user.setAge(28);
list.add(user); user = new User();
user.setName("zs3");
user.setPassWord("12347");
user.setAge(29);
list.add(user); map.put("userlist", list);
return "exportExcel";
}
}

访问控制器的路径就能直接下载Excel表了

springMvc使用自定义View生成Excel表格的更多相关文章

  1. H5纯前端生成Excel表格

    H5纯前端生成Excel表格方法如下: <!DOCTYPE html> <html> <head> <title></title> < ...

  2. Java操作Jxl实现导出数据生成Excel表格数据文件

    实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js.Css文件.页面:Jsp.拦截请求:Servlet.逻辑处理:ClassBean.数据库:SQLserver. 注意: ...

  3. 详解python操作生成excel表格,并且填充数据

    最近在研究python操作excel表格的问题,首先读取excel表格觉得平时用的多,不怎么有难度,就是pyhon生成excel表格的时候,平时不怎么用,所以重点研究了一下,现总结如下: 1.首先用到 ...

  4. EPPlus生成Excel表格(只支持2007及以上)

    主要来源: https://www.cnblogs.com/rumeng/p/3785748.html http://epplus.codeplex.com/ FileInfo newFile = n ...

  5. PHP生成excel表格文件并下载

    本文引自网络,仅供自己学习之用. 利用php导出excel我们大多会直接生成.xls文件,这种方便快捷. function createtable($list,$filename){ header(& ...

  6. 数据库数据生成Excel表格(多用在导出数据)

    最近在项目开发中遇到这样一个需求,用户聊天模块产品要求记录用户聊天信息,但只保存当天的,每天都要刷新清空数据,但聊天记录要以Excel的形式打印出来,于是就引出了将数据库的数据导出成Excel表格的需 ...

  7. JavaWeb开发中采用FreeMarker生成Excel表格

            最近做了一个需求,要求导出一个采购合同的Excel表格,这个表格样式比较多.由于是合同,这个Excel表格里面有好多格式要求,比如结尾处签字那部分就有格式要求.这里介绍种采用FreeM ...

  8. 使用Aspose插件将程序中的表格,导出生成excel表格

    http://www.cnblogs.com/lanyue52011/p/3372452.html这个是原文地址 /// <summary> /// 点击按钮,将内存表导出excel表格! ...

  9. Table生成Excel表格

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. Java 利用poi生成excel表格

    所需jar包,如下所示 写一个excel工具类 ExcelUtils .java import java.lang.reflect.Field; import java.util.Iterator; ...

随机推荐

  1. ajax 请求接口实例

    通过 HTTP 请求加载远程数据. jQuery 底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等.$.ajax() 返回其创建的 XMLHttpRequest 对象.大多数 ...

  2. 第一次至第三次PTAJava大作业分析

    (1)前言: 三次题目集的知识点: 正则表达式(Regular Expression,简称Regex或RegExp)是一个强大的文本处理工具,用于匹配.查找和替换字符串.以下是正则表达式的主要知识点总 ...

  3. Math Record

    T1.P3327 知识点:莫比乌斯反演,数论分块 我们知道 \(d(ij) = \sum_{x | i}\sum_{y | j}[\gcd(x,y) == 1]\). 所以我们就要求 \(\sum^n ...

  4. C#.NET Winform承载WCF RESTful API (App.config 方式)

    1.新建一个名为"WindowsForms承载WCF"的WINFORM程序. 2.在解决方案里添加一个"WCF 服务库"的项目,名为"WcfYeah& ...

  5. C#.NET Winform使用线程承载WCF (硬编码配置)

    winform同步承载WCF时,遇到大量请求,可能会阻塞UI线程.这时就需要开个线程来承载WCF. 1.硬编码形式创建WCF服务,WCFServer类: using CommonUtils; usin ...

  6. Spring扩展——BeanFactoryPostProcessor(BFPP)

    引言 在Spring中BeanFactoryPostProcessor(后面使用简写BFPP),作为容器启动过程的对容器进行修改操作的Bean对象,是Spring框架对外提供的核心扩展点之一,Spri ...

  7. UIButton选择状态下长按时会变回原始状态

    问题大概就像这样 (请无视那红字) 一般而言这是高亮状态的设置有所缺乏.完善代码如下: [_pupilBtn setImage:[UIImage imageNamed:@"a1"] ...

  8. 异构智联Wi-Fi6+蓝牙模组,重新定义多屏互联体验!

    下班回家打开门,电灯.电视.空调.音响.电动窗帘.扫地机器人--一呼百应,有序开工,原本冰冷的房子立刻变成了温暖港湾.可以说,舒适便捷的智能设备已经完全融入了我们的生活中. 从单一场景.单一设备,到现 ...

  9. 【译】了解17.10 GA 中最新的 Git 工具特性

    我们相信提高开发和团队协作的生产力可以帮助您产生更好的软件解决方案.这就是为什么 Visual Studio 版本控制团队发布了新特性,简化了内部循环和代码审查体验.您将获得 AI 支持编写提交消息. ...

  10. 福利来了!MoneyPrinterPlus可以自动配置环境和自动运行了

    之前开源了MoneyPrinterPlus,可以实现批量混剪视频,一键生成视频和自动发布视频的功能. 但是经常会看到小伙伴在安装过程中遇到很多问题.所以这篇文章的目的就是告诉大家怎么使用MoneyPr ...