注意:
1. 模板需放在 WEB-INF 目录下
2. 指定模板路径时不需要添加扩展名, Spring将自动添加 .xls 到URL 属性中.
3. 在指定URL前需先设置 view 的 ApplicationContext

1. 控制器配置 control-context.xml

 <bean id="beanNameViewResolver"
class="org.springframework.web.servlet.view.BeanNameViewResolver" />  <bean id="viewController" class="ViewController">
<property name="dataModel">
<ref bean="model-DataModel"/>
</property>
</bean> <bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
  <prop key="/view/*.report">viewController</prop>
</props>
</property>
</bean>

2. Excel视图子类化 ExcelView.java
实现 org.springframework.web.servlet.view.document.AbstractExcelView 类中的 buildExcelDocument方法。

 public class ExcelView extends AbstractExcelView {

     protected void buildExcelDocument(Map<String, Object> model,
HSSFWorkbook wb, HttpServletRequest request, HttpServletResponse reqponse)
throws Exception { //...
  Object[] datas = (Object[]) model.get("data");
//... HSSFSheet sheet;
//get the sheet 1 in template
sheet = wb.getSheetAt(0);
//handle this sheet
//...
}
}

3. 控制器 ViewController ViewController.java

 public class ViewController extends MultiActionController {

     private DataModel dataModel;

     public void setDataModel(DataModel dataModel){
this.dataModel = dataModel;
} public ModelAndView exportToExcel(HttpServletRequest request, HttpServletResponse response) throws Exception { Map<String,Object> model=new HashMap<String,Object>(); Object[] datas; datas = dataModel.getDatas.toArray(); model.put("data", datas); ExcelView excelView = new ExcelView(); excelView.setApplicationContext(this.getWebApplicationContext());
excelView.setUrl("/WEB-INF/Template"); return new ModelAndView(excelView,model);
}
}

4. web.xml

 <servlet>
<servlet-name>viewController</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/control-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
<servlet-name>viewController</servlet-name>
<url-pattern>*.report</url-pattern>
 </servlet-mapping>

5. 运行
http://hostname/view/exportToExcel.report

Spring 中 AbstractExcelView 支持根据模板生成Excel文件. 通过设置 view 的 URL 属性指定模板的路径的更多相关文章

  1. java通过FreeMarker模板生成Excel文件之.ftl模板制作

    关于怎么通过freemarker模板生成excel的文章很多,关键点在于怎么制作模板文件.ftl 网上的办法是: (1)把Excel模板的格式调好,另存为xml文件 (2)新建一个.ftl文件,把xm ...

  2. 实现excel导入导出功能,excel导入数据到页面中,页面数据导出生成excel文件

    今天接到项目中的一个功能,要实现excel的导入,导出功能.这个看起来思路比较清楚,但是做起了就遇到了不少问题. 不过核心的问题,大家也不会遇到了.每个项目前台页面,以及数据填充方式都不一样,不过大多 ...

  3. 【spring boot logback】日志logback 生成日志文件在本项目下,而不在指定的日志文件目录下/指定日志文件到达最大值后不按照配置进行切割

    原本的日志文件配置如下: <?xml version="1.0" encoding="UTF-8"?> <configuration scan ...

  4. XLSTransformer生成excel文件简单演示样例

    项目结构图: 项目中所用到的jar,能够到http://www.findjar.com/index.x下载 ExcelUtil类源代码: package util; import java.io.IO ...

  5. ASP.NET MVC 4.0 中使用NPOI 2.2.0 按模板生成Excel报表

    使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/ ...

  6. 读取Excel二进制写入DB,并从DB中读取生成Excel文件

    namespace SendMailSMSService { class Program { static void Main(string[] args) { var connString = Sq ...

  7. 利用html模板生成Word文件(服务器端不需要安装Word)

    利用html模板生成Word文件(服务器端不需要安装Word) 由于管理的原因,不能在服务器上安装Office相关组件,所以只能采用客户端读取Html模板,后台对模板中标记的字段数据替换并返回给客户端 ...

  8. XLSTransformer生成excel文件

    jxls的使用方法: 1)声明一个XLSTransformer对象,生成方式就是使用new操作符                 XLSTransformer transformer = new XL ...

  9. POI通过模板导出EXCEL文件

    一般的EXCEL导出使用POI先创建一个HSSFWorkbook,然后通过不断创建HSSFRow,HSSFCell后设置单元格内容便可以完成导出. 这次在项目中需要用到模板,导出的内容包括(1.模板中 ...

随机推荐

  1. 2 web服务器:固定返回值

    1.老师给的思路 #tcp socket 服务端 socket = socket.socket() socket.bind() socket.listen() client_socket = sock ...

  2. PIC32MZ 通过USB在线升级 -- USB CDC bootloader

    了解bootloader 的实现,请加QQ: 1273623966 (验证填 bootloader):欢迎咨询或定制bootloader:我的博客主页www.cnblogs.com/geekygeek ...

  3. [转]URL传中文参数导致乱码的解决方案之encodeURI

    通过URL传中文参数时,在服务端后台获取到的值往往会出现乱码.解决方案有很多种.本文介绍如何通过encodeURI来解决中文乱码问题. 首先,在前端页面准备参数的时候,需要对中文参数进行encode处 ...

  4. 1.爬虫 urlib库讲解 Handler高级用法

    在前面我们总结了urllib库的 urlopen()和Request()方法的使用,在这一小节我们要使用相关的Handler来实现代理.cookies等功能. 写在前面: urlopen()方法不支持 ...

  5. C++STL——概述

    一.相关介绍 STL 标准模板库 在编写代码的过程中有一些程序经常会被用到,而且需求特别稳定,所以C++中把这些常用的模板做了统一的规范,慢慢的就形成了STL 提供三种类型的组件: 容器.迭代器和算法 ...

  6. Qscintilla2编译使用

    Qscintilla2的下载地址: https://github.com/josephwilk/qscintilla https://riverbankcomputing.com/software/q ...

  7. Mac下安装OpenCV问题

    最近看了纹理特征方面的paper,看了一些资料之后,想要实际动手实现一下其中LBP算法,果然OpenCV中已经实现. 问题 No module named "cv2" 当我在我们项 ...

  8. JAVA-I/O流任务

    作业地址 5. Scanner基本概念组装对象 编写public static List readStudents(String fileName)从fileName指定的文本文件中读取所有学生,并将 ...

  9. 关于socket的疑问

    一直感觉一端发送数据,另一端接受数据很不可思议的事情,如果不能即时地读走会导致什么后果呢? 其实socket读出来的数据,你自己看着办,里面的数据是什么格式你自己去解析,用户可以基于TCP去实现你自己 ...

  10. JavaScript中常用转义字符

    \b   退格 \f   换页 \r   回车 \n   换行 \"   双引号 \'  单引号 \t  Tab字符 \\  反斜杠 \xnn  十六进制代码nn表示的字符 \unnnn 十 ...