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


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

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

     1 <bean id="beanNameViewResolver"
    2 class="org.springframework.web.servlet.view.BeanNameViewResolver" />
    3
    4  <bean id="viewController" class="ViewController">
    5 <property name="dataModel">
    6 <ref bean="model-DataModel"/>
    7 </property>
    8 </bean>
    9
    10 <bean id="urlMapping"
    11 class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    12 <property name="mappings">
    13 <props>
    14   <prop key="/view/*.report">viewController</prop>
    15 </props>
    16 </property>
    17 </bean>


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

     1 public class ExcelView extends AbstractExcelView {
    2
    3 protected void buildExcelDocument(Map<String, Object> model,
    4 HSSFWorkbook wb, HttpServletRequest request, HttpServletResponse reqponse)
    5 throws Exception {
    6
    7 //...
    8   Object[] datas = (Object[]) model.get("data");
    9 //...
    10
    11 HSSFSheet sheet;
    12 //get the sheet 1 in template
    13 sheet = wb.getSheetAt(0);
    14 //handle this sheet
    15 //...
    16 }
    17 }


    3. 控制器 ViewController ViewController.java

     1 public class ViewController extends MultiActionController {
    2
    3 private DataModel dataModel;
    4
    5 public void setDataModel(DataModel dataModel){
    6 this.dataModel = dataModel;
    7 }
    8
    9 public ModelAndView exportToExcel(HttpServletRequest request, HttpServletResponse response) throws Exception {
    10
    11 Map<String,Object> model=new HashMap<String,Object>();
    12
    13 Object[] datas;
    14
    15 datas = dataModel.getDatas.toArray();
    16
    17 model.put("data", datas);
    18
    19 ExcelView excelView = new ExcelView();
    20
    21 excelView.setApplicationContext(this.getWebApplicationContext());
    22 excelView.setUrl("/WEB-INF/Template");
    23
    24 return new ModelAndView(excelView,model);
    25 }
    26 }


    4. web.xml

     1 <servlet>
    2 <servlet-name>viewController</servlet-name>
    3 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    4 <init-param>
    5 <param-name>contextConfigLocation</param-name>
    6 <param-value>/WEB-INF/config/control-context.xml</param-value>
    7 </init-param>
    8 <load-on-startup>1</load-on-startup>
    9  </servlet>
    10  <servlet-mapping>
    11 <servlet-name>viewController</servlet-name>
    12 <url-pattern>*.report</url-pattern>
    13  </servlet-mapping>


    5. 运行
    http://hostname/view/exportToExcel.report
  • 相关阅读:
    jdk8u241各系统版本
    jdk8u241各系统版本
    【转】软件测试测试用例设计规范
    虚拟机安装Centos(VirtulBox)
    Java Selenium搭建Web UI自动化环境
    【转】WEB(Javascript)远程调用方案清单
    关于.net页面提交后css失效或部分失效的问题
    常用照片尺寸 照片规格(英寸) (厘米) (像素) 数码相机类型
    【转】jquery的autoComplete 中文介绍
    网页 乱码
  • 原文地址:https://www.cnblogs.com/walk-the-Line/p/5387383.html
Copyright © 2020-2023  润新知