Spring 中 AbstractExcelView 支持根据模板生成Excel文件. 通过设置 view 的 URL 属性指定模板的路径
2016-04-13 15:38
585 查看
注意: 1. 模板需放在 WEB-INF 目录下 2. 指定模板路径时不需要添加扩展名, Spring将自动添加 .xls 到URL 属性中. 3. 在指定URL前需先设置 view 的 ApplicationContext |
<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
相关文章推荐
- eclipse配置jdk源码
- Java 输入
- 第06篇 MyEclipse 2016 安装/破解
- Java数据类型
- java书籍推荐
- java Pattern和Matcher详解
- java设计模式之装饰模式代理模式区别
- java泛型
- java泛型方法的使用
- java并发:线程同步机制之Volatile关键字&原子操作Atomic
- Struts2 获取 Session对象
- JAVA的可变参数,参数中有三个点
- Java基础:运行时异常和非运行时异常
- Java多线程(2) 同步
- java 多线程编程之join()的用法
- Java并发编程:线程池的使用
- windows坏境下NATS服务搭建与测试
- java中一直有点晕的集合问题
- java基础(五),集合,泛型
- 解决eclipse中出现Resource is out of sync with the file system问题