您的位置:首页 > 编程语言 > Java开发

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

2016-04-13 15:38 585 查看
注意:
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: