org.springframework.web.servlet.view.document
Class AbstractExcelView

java.lang.Object
  extended byorg.springframework.context.support.ApplicationObjectSupport
      extended byorg.springframework.web.context.support.WebApplicationObjectSupport
          extended byorg.springframework.web.servlet.view.AbstractView
              extended byorg.springframework.web.servlet.view.document.AbstractExcelView
All Implemented Interfaces:
ApplicationContextAware, BeanNameAware, View

public abstract class AbstractExcelView
extends AbstractView

Convenient superclass for Excel-document views. Properties:

  • url (optional): The url of an existing Excel document to pick as a starting point. It is done without localization part nor the .xls extension.
    The file will be searched with names in the following order:
  • [url]_[language][country].xls
  • [url]_[language].xls
  • [url].xls
    For work with th workBook in the subclass, see Jakarta's POI site
    As an example, you can try this snippet:

    protected void buildExcelDocument(
    Map model,
    HSSFWorkbook wb,
    HttpServletRequest request,
    HttpServletResponse response )
    {
    // AModel aModel = ( AModel ) model.get( "amodel" );

    HSSFSheet sheet;
    HSSFRow sheetRow;
    HSSFCell cell;

    // Go to the first sheet
    // getSheetAt: only if wb is created from an existing document
    //sheet = wb.getSheetAt( 0 );
    sheet = wb.createSheet("Spring");
    sheet.setDefaultColumnWidth((short)12);

    // write a text at A1
    cell = getCell( sheet, 0, 0 );
    setText(cell,"Spring POI test");

    // Write the current date at A2
    HSSFCellStyle dateStyle = wb.createCellStyle( );
    dateStyle.setDataFormat( HSSFDataFormat.getBuiltinFormat( "m/d/yy" ) );
    cell = getCell( sheet, 1, 0 );
    cell.setCellValue( new Date() );
    cell.setCellStyle( dateStyle );

    // Write a number at A3
    getCell( sheet, 2, 0 ).setCellValue( 458 );

    // Write a range of numbers
    sheetRow = sheet.createRow( 3 );
    for (short i = 0; i<10; i++) {
    sheetRow.createCell(i).setCellValue( i*10 );
    }
    }

    Don't forget to add on web.xml:
    <servlet-mapping>
    <servlet-name>[your Spring servlet]</servlet-name>
    <url-pattern>*.xls</url-pattern>
    </servlet-mapping>

    The use of this view is close to the AbstractPdfView

    Author:
    Jean-Pierre Pawlak
    See Also:
    AbstractPdfView

    Field Summary
     
    Fields inherited from class org.springframework.context.support.ApplicationObjectSupport
    logger
     
    Constructor Summary
    AbstractExcelView()
               
     
    Method Summary
    protected abstract  void buildExcelDocument(java.util.Map model, org.apache.poi.hssf.usermodel.HSSFWorkbook wb, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
              Subclasses must implement this method to create an Excel HSSFWorkbook document, given the model.
    protected  org.apache.poi.hssf.usermodel.HSSFCell getCell(org.apache.poi.hssf.usermodel.HSSFSheet sheet, int row, int col)
              Convenient method to obtain the cell in the given sheet, row and column
    Creating by the way the row and the cell if they still doesn't exist
    Thus, the column can be passed as an int, the method making the needed downcasts.
    protected  org.apache.poi.hssf.usermodel.HSSFWorkbook getTemplateSource(java.lang.String url, javax.servlet.http.HttpServletRequest request)
              Creates the workBook from an existing .xls document.
    protected  void renderMergedOutputModel(java.util.Map model, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
              Renders the view given the specified model.
    protected  void setText(org.apache.poi.hssf.usermodel.HSSFCell cell, java.lang.String text)
              Convenient method to set a String as text content in a cell.
     void setUrl(java.lang.String url)
              Sets the url of the Excel workbook source without localization part nor extension.
     
    Methods inherited from class org.springframework.web.servlet.view.AbstractView
    addStaticAttribute, getBeanName, getContentType, getStaticAttributes, render, setAttributes, setAttributesCSV, setAttributesMap, setBeanName, setContentType, setRequestContextAttribute
     
    Methods inherited from class org.springframework.web.context.support.WebApplicationObjectSupport
    getServletContext, getTempDir, getWebApplicationContext, requiredContextClass
     
    Methods inherited from class org.springframework.context.support.ApplicationObjectSupport
    getApplicationContext, getMessageSourceAccessor, initApplicationContext, setApplicationContext
     
    Methods inherited from class java.lang.Object
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
     

    Constructor Detail

    AbstractExcelView

    public AbstractExcelView()
    Method Detail

    setUrl

    public void setUrl(java.lang.String url)
    Sets the url of the Excel workbook source without localization part nor extension.


    renderMergedOutputModel

    protected final void renderMergedOutputModel(java.util.Map model,
                                                 javax.servlet.http.HttpServletRequest request,
                                                 javax.servlet.http.HttpServletResponse response)
                                          throws java.lang.Exception
    Renders the view given the specified model.

    Specified by:
    renderMergedOutputModel in class AbstractView
    Parameters:
    model - combined output Map, with dynamic values taking precedence over static attributes
    request - current HTTP request
    response - current HTTP response
    Throws:
    java.lang.Exception - if rendering failed

    getTemplateSource

    protected org.apache.poi.hssf.usermodel.HSSFWorkbook getTemplateSource(java.lang.String url,
                                                                           javax.servlet.http.HttpServletRequest request)
                                                                    throws javax.servlet.ServletException
    Creates the workBook from an existing .xls document.

    Parameters:
    url - url of the Excle template without localization part nor extension
    request -
    Returns:
    HSSFWorkbook
    Throws:
    javax.servlet.ServletException

    buildExcelDocument

    protected abstract void buildExcelDocument(java.util.Map model,
                                               org.apache.poi.hssf.usermodel.HSSFWorkbook wb,
                                               javax.servlet.http.HttpServletRequest request,
                                               javax.servlet.http.HttpServletResponse response)
                                        throws java.lang.Exception
    Subclasses must implement this method to create an Excel HSSFWorkbook document, given the model.

    Parameters:
    model -
    wb - The Excel workBook to complete
    request - in case we need locale etc. Shouldn't look at attributes
    response - in case we need to set cookies. Shouldn't write to it.
    Throws:
    java.lang.Exception

    getCell

    protected org.apache.poi.hssf.usermodel.HSSFCell getCell(org.apache.poi.hssf.usermodel.HSSFSheet sheet,
                                                             int row,
                                                             int col)
    Convenient method to obtain the cell in the given sheet, row and column
    Creating by the way the row and the cell if they still doesn't exist
    Thus, the column can be passed as an int, the method making the needed downcasts.

    Parameters:
    sheet - A sheet Object. The first sheet is usually obtained by wb.getSheetAt(0)
    row -
    col -
    Returns:
    HSSFCell

    setText

    protected void setText(org.apache.poi.hssf.usermodel.HSSFCell cell,
                           java.lang.String text)
    Convenient method to set a String as text content in a cell.

    Parameters:
    cell - The cell in which the text must be put
    text - The text to put in the cell


    Copyright (C) 2003-2004 The Spring Framework Project.