注意:
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. 8.Mongodb备份与恢复

    1.备份 语法 mongodump -h dbhost -d dbname -o dbdirectory -h:服务器地址,也可以指定端口号 -d:需要备份的数据库名称 -o:备份的数据存放位置,此目 ...

  2. PADS9.5的常用菜单栏

    1. PAD9.5常用的2个菜单是布线工具和选择过滤工具. 2. 布线工具菜单,如下图,依次是选择,移动,复制,删除,添加元件,布线,新建层次化符号,交换参考编号,交换引脚,添加总线,分割总线,延伸总 ...

  3. HDFS分布式集群

    一.HDFS伪分布式环境搭建 Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.它和现有的分布式文件系统有很多共同点.但同时, ...

  4. Python 3 学习笔记之——变量作用域、模块和包

    1. 变量作用域 Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的.变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称.Python 的作用域一共 ...

  5. sqlserver 找出字符第N次出现的位置

    [1编写函数]CREATE FUNCTION IndexOf(@str VARCHAR(500),@value VARCHAR(50),@posIndex INT)RETURNS int AS BEG ...

  6. MongoDB Linux下的安装和启动

    1. 下载MongoDB,此处下载的版本是:mongodb-linux-i686-1.8.1.tgz.tar. http://fastdl.mongodb.org/linux/mongodb-linu ...

  7. MySql数据库插入或更新报错:Cannot add or update a child row: a foreign key constraint fails

    具体报错信息: Cannot add or update a child row: a foreign key constraint fails (`xxx`.`AAA`, CONSTRAINT `t ...

  8. 初学者学习python2还是python3?

    如果你是一个初学者,或者你以前接触过其他的编程语言,你可能不知道,在开始学习python的时候都会遇到一个比较让人很头疼的问题:版本问题!!是学习python2 还是学习 python3 ?这是非常让 ...

  9. element-ui的el-tabel组件怎么使用type=“expand”实现表格嵌套并且在子表格没有数据的时候隐藏展开按钮

    效果如下: 试过很多种办法,思路都在怎么控制<el-table-column type="expand">里面的type上,比如使用v-show等等,但是发现,要不就是 ...

  10. javaScript this 之谜

    作为接触js没多久的人对变量作用域和this所指表示非常迷惑,专门花了一个下午google了一下,感觉以前百度到的结果都是什么鬼... 下面是我对this的认识,学疏才浅请拍砖 每一个方法都有自己的上 ...