zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    《Linux性能及调优指南》第二章:监控和基准工具2.1-2.2
    《Linux 性能及调优指南》1.5 网络子系统
    《Linux 性能及调优指南》1.4 硬盘I/O子系统
    《Linux性能及调优指南》1.3 Linux文件系统
    《linux性能及调优指南》 3.5 网络瓶颈
    《linux性能及调优指南》 3.4 硬盘瓶颈
    《linux性能及调优指南》 3.3 内存瓶颈
    你应该使用Python3里的这些新特性
    python异步编程
    异步网络编程aiohttp的使用
  • 原文地址:https://www.cnblogs.com/walk-the-Line/p/5387383.html
Copyright © 2011-2022 走看看