com.interface21.web.servlet.view.document
Class AbstractExcelView

java.lang.Object
  |
  +--com.interface21.context.support.ApplicationObjectSupport
        |
        +--com.interface21.web.servlet.view.AbstractView
              |
              +--com.interface21.web.servlet.view.document.AbstractExcelView
All Implemented Interfaces:
ApplicationContextAware, 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

    Fields inherited from class com.interface21.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.
     
    Methods inherited from class com.interface21.web.servlet.view.AbstractView
    addStaticAttribute, getContentType, getName, getStaticAttributes, render, setAttributes, setAttributesCSV, setContentType, setName, setRequestContextAttribute
     
    Methods inherited from class com.interface21.context.support.ApplicationObjectSupport
    getApplicationContext, 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

    renderMergedOutputModel

    protected final void renderMergedOutputModel(java.util.Map model,
                                                 javax.servlet.http.HttpServletRequest request,
                                                 javax.servlet.http.HttpServletResponse response)
                                          throws javax.servlet.ServletException,
                                                 java.io.IOException
    Renders the view given the specified model.
    Overrides:
    renderMergedOutputModel in class AbstractView
    See Also:
    AbstractView.renderMergedOutputModel(java.util.Map, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)

    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

    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)
    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.

    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

    setUrl

    public void setUrl(java.lang.String url)
    Sets the url.
    Parameters:
    url - The Excel workBook source without localization part nor extension


    Rod Johnson and Spring contributors 2001-2003.