Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (C) 2014 Philip Helger (www.helger.com) philip[at]helger[dot]com Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
 
 package com.helger.appbasics.exchange.bulkexport.format;
 
 
 
 
Export records to Excel workbook.

Author(s):
Philip Helger
 
 public class ExporterExcel implements IExporterFile
 {
   private static final ExcelStyle DEFAULT_STYLE_DATE = new ExcelStyle ().setDataFormat ("dd.mm.yyyy");
   private static final ExcelStyle DEFAULT_STYLE_TIME = new ExcelStyle ().setDataFormat ("hh:mm:ss");
   private static final ExcelStyle DEFAULT_STYLE_DATETIME = new ExcelStyle ().setDataFormat ("dd.mm.yyyy hh:mm:ss");
 
   private final EExcelVersion m_eVersion;
   private ExcelStyle m_aStyleBoolean;
   private ExcelStyle m_aStyleInt;
   private ExcelStyle m_aStyleDouble;
   private ExcelStyle m_aStyleText;
 
   public ExporterExcel (@Nonnull final EExcelVersion eVersion)
   {
      = ValueEnforcer.notNull (eVersion"Version");
   }
 
   @Nonnull
   public EExcelVersion getExcelVersion ()
   {
     return ;
   }
 
   @Nonnull
   public ExporterExcel setStyleBoolean (@Nullable final ExcelStyle aStyle)
   {
      = aStyle == null ? null : aStyle.getClone ();
     return this;
   }
 
   @Nullable
   public ExcelStyle getStyleBoolean ()
   {
     return  == null ? null : .getClone ();
   }
 
   @Nonnull
   public ExporterExcel setStyleInt (@Nullable final ExcelStyle aStyle)
   {
     = aStyle == null ? null : aStyle.getClone ();
    return this;
  }
  public ExcelStyle getStyleInt ()
  {
    return  == null ? null : .getClone ();
  }
  public ExporterExcel setStyleDouble (@Nullable final ExcelStyle aStyle)
  {
     = aStyle == null ? null : aStyle.getClone ();
    return this;
  }
  public ExcelStyle getStyleDouble ()
  {
    return  == null ? null : .getClone ();
  }
  public ExporterExcel setStyleText (@Nullable final ExcelStyle aStyle)
  {
     = aStyle == null ? null : aStyle.getClone ();
    return this;
  }
  public ExcelStyle getStyleText ()
  {
    return  == null ? null : .getClone ();
  }
  public ExporterExcel setStyleDate (@Nonnull final ExcelStyle aStyle)
  {
     = ValueEnforcer.notNull (aStyle"Style").getClone ();
    return this;
  }
  public ExcelStyle getStyleDate ()
  {
    return .getClone ();
  }
  public ExporterExcel setStyleTime (@Nonnull final ExcelStyle aStyle)
  {
     = ValueEnforcer.notNull (aStyle"Style").getClone ();
    return this;
  }
  public ExcelStyle getStyleTime ()
  {
    return .getClone ();
  }
  public ExporterExcel setStyleDateTime (@Nonnull final ExcelStyle aStyle)
  {
     = ValueEnforcer.notNull (aStyle"Style").getClone ();
    return this;
  }
  {
    return .getClone ();
  }

  
Callback when a new row is created.

Parameters:
aWBCH The creation helper
eRecordType The record type
aRow The created row.
nRowIndex The 0-based total index of the row (including header)
  protected void onAddRow (@Nonnull final WorkbookCreationHelper aWBCH,
                           @Nonnull final EExportRecordType eRecordType,
                           @Nonnull final Row aRow,
                           @Nonnegative final int nRowIndex)
  {}

  
Callback when a new row is created.

Parameters:
aWBCH The creation helper
eRecordType The record type
aCell The created cell.
nCellIndex The 0-based index of the cell in the current row
eBaseType The data type of the last cells data.
  protected void onAddCell (@Nonnull final WorkbookCreationHelper aWBCH,
                            @Nonnull final EExportRecordType eRecordType,
                            @Nonnull final Cell aCell,
                            @Nonnegative final int nCellIndex,
                            @Nonnull final EBaseType eBaseType)
  {}
  private void _emitRecord (@Nonnull final WorkbookCreationHelper aWBCH,
                            @Nonnull final EExportRecordType eRecordType,
                            @Nonnull final IExportRecord aRecord)
  {
    final int nRowIndex = aWBCH.getRowCount ();
    final Row aRow = aWBCH.addRow ();
    // Callback
    onAddRow (aWBCHeRecordTypeaRownRowIndex);
    for (final IExportRecordField aField : aRecord.getAllFields ())
    {
      final Object aFieldValue = aField.getFieldValue ();
      if (aFieldValue == null)
      {
        // Add an empty cell
        aWBCH.addCell ();
      }
      else
      {
        final Cell aCell;
        final int nCellIndex = aWBCH.getCellCountInRow ();
        switch (aField.getFieldType ())
        {
          case :
            aCell = aWBCH.addCell (((BooleanaFieldValue).booleanValue ());
            if ( != null)
              aWBCH.addCellStyle ();
            break;
          case :
            aCell = aWBCH.addCell (((NumberaFieldValue).intValue ());
            if ( != null)
              aWBCH.addCellStyle ();
            break;
          case :
            aCell = aWBCH.addCell (((NumberaFieldValue).doubleValue ());
            if ( != null)
              aWBCH.addCellStyle ();
            break;
          case :
            aCell = aWBCH.addCell ((StringaFieldValue);
            if ( != null)
              aWBCH.addCellStyle ();
            break;
          case :
            aCell = aWBCH.addCell (((LocalDateaFieldValue).toDateTime (.).toDate ());
            aWBCH.addCellStyle ();
            break;
          case :
            aCell = aWBCH.addCell (((LocalTimeaFieldValue).toDateTime (.).toDate ());
            aWBCH.addCellStyle ();
            break;
          case :
            if (aFieldValue instanceof LocalDateTime)
            {
              // No timezone
              aCell = aWBCH.addCell (((LocalDateTimeaFieldValue).toDateTime ().toDate ());
            }
            else
            {
              // Here we have a timezone -> use calendar
              aCell = aWBCH.addCell (((DateTimeaFieldValue).toGregorianCalendar ());
            }
            aWBCH.addCellStyle ();
            break;
          default:
            throw new IllegalArgumentException ("The type " + aField.getFieldType () + " cannot be written to Excel!");
        }
        // Callback
        onAddCell (aWBCHeRecordTypeaCellnCellIndexaField.getFieldType ());
      }
    }
  }
  public final ESuccess exportRecords (@Nonnull final IExportRecordProvider aProvider,
                                       @Nonnull @WillClose final OutputStream aOS)
  {
    try
    {
      ValueEnforcer.notNull (aProvider"Provider");
      ValueEnforcer.notNull (aOS"OutputStream");
      final WorkbookCreationHelper aWBCH = new WorkbookCreationHelper ();
      aWBCH.createNewSheet ();
      // Header
      for (final IExportRecord aHeaderRecord : aProvider.getHeaderRecords ())
        _emitRecord (aWBCH.aHeaderRecord);
      // Body
      for (final IExportRecord aBodyRecord : aProvider.getBodyRecords ())
        _emitRecord (aWBCH.aBodyRecord);
      // Footer
      for (final IExportRecord aFooterRecord : aProvider.getFooterRecords ())
        _emitRecord (aWBCH.aFooterRecord);
      if (aWBCH.getRowCount () == 0)
        return .;
      aWBCH.autoSizeAllColumns ();
      return aWBCH.write (aOS);
    }
    finally
    {
      StreamUtils.close (aOS);
    }
  }
  {
  }
New to GrepCode? Check out our FAQ X