com.phloc.poi.excel.style.ExcelStyle Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of phloc-poi Show documentation
Show all versions of phloc-poi Show documentation
Wrapper around Apache POI
/**
* Copyright (C) 2006-2015 phloc systems
* http://www.phloc.com
* office[at]phloc[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.phloc.poi.excel.style;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.annotation.concurrent.NotThreadSafe;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Workbook;
import com.phloc.commons.ICloneable;
import com.phloc.commons.ValueEnforcer;
import com.phloc.commons.equals.EqualsUtils;
import com.phloc.commons.hash.HashCodeGenerator;
import com.phloc.commons.string.ToStringGenerator;
/**
* Represents a single excel style with enums instead of numeric values.
*
* @author Philip Helger
*/
@NotThreadSafe
public final class ExcelStyle implements ICloneable
{
/** By default text wrapping is disabled */
public static final boolean DEFAULT_WRAP_TEXT = false;
private EExcelAlignment m_eAlign;
private EExcelVerticalAlignment m_eVAlign;
private boolean m_bWrapText = DEFAULT_WRAP_TEXT;
private String m_sDataFormat;
private IndexedColors m_eFillBackgroundColor;
private IndexedColors m_eFillForegroundColor;
private EExcelPattern m_eFillPattern;
private EExcelBorder m_eBorderTop;
private EExcelBorder m_eBorderRight;
private EExcelBorder m_eBorderBottom;
private EExcelBorder m_eBorderLeft;
private int m_nFontIndex = -1;
public ExcelStyle ()
{}
public ExcelStyle (@Nonnull final ExcelStyle rhs)
{
m_eAlign = rhs.m_eAlign;
m_eVAlign = rhs.m_eVAlign;
m_bWrapText = rhs.m_bWrapText;
m_sDataFormat = rhs.m_sDataFormat;
m_eFillBackgroundColor = rhs.m_eFillBackgroundColor;
m_eFillForegroundColor = rhs.m_eFillForegroundColor;
m_eFillPattern = rhs.m_eFillPattern;
m_eBorderTop = rhs.m_eBorderTop;
m_eBorderRight = rhs.m_eBorderRight;
m_eBorderBottom = rhs.m_eBorderBottom;
m_eBorderLeft = rhs.m_eBorderLeft;
m_nFontIndex = rhs.m_nFontIndex;
}
@Nullable
public EExcelAlignment getAlign ()
{
return m_eAlign;
}
@Nonnull
public ExcelStyle setAlign (@Nullable final EExcelAlignment eAlign)
{
m_eAlign = eAlign;
return this;
}
@Nullable
public EExcelVerticalAlignment getVerticalAlign ()
{
return m_eVAlign;
}
@Nonnull
public ExcelStyle setVerticalAlign (@Nullable final EExcelVerticalAlignment eVAlign)
{
m_eVAlign = eVAlign;
return this;
}
public boolean isWrapText ()
{
return m_bWrapText;
}
@Nonnull
public ExcelStyle setWrapText (final boolean bWrapText)
{
m_bWrapText = bWrapText;
return this;
}
@Nullable
public String getDataFormat ()
{
return m_sDataFormat;
}
@Nonnull
public ExcelStyle setDataFormat (@Nullable final String sDataFormat)
{
m_sDataFormat = sDataFormat;
return this;
}
@Nullable
public IndexedColors getFillBackgroundColor ()
{
return m_eFillBackgroundColor;
}
@Nonnull
public ExcelStyle setFillBackgroundColor (@Nullable final IndexedColors eColor)
{
m_eFillBackgroundColor = eColor;
return this;
}
@Nullable
public IndexedColors getFillForegroundColor ()
{
return m_eFillForegroundColor;
}
@Nonnull
public ExcelStyle setFillForegroundColor (@Nullable final IndexedColors eColor)
{
m_eFillForegroundColor = eColor;
return this;
}
@Nullable
public EExcelPattern getFillPattern ()
{
return m_eFillPattern;
}
@Nonnull
public ExcelStyle setFillPattern (@Nullable final EExcelPattern ePattern)
{
m_eFillPattern = ePattern;
return this;
}
@Nullable
public EExcelBorder getBorderTop ()
{
return m_eBorderTop;
}
@Nonnull
public ExcelStyle setBorderTop (@Nullable final EExcelBorder eBorder)
{
m_eBorderTop = eBorder;
return this;
}
@Nullable
public EExcelBorder getBorderRight ()
{
return m_eBorderRight;
}
@Nonnull
public ExcelStyle setBorderRight (@Nullable final EExcelBorder eBorder)
{
m_eBorderRight = eBorder;
return this;
}
@Nullable
public EExcelBorder getBorderBottom ()
{
return m_eBorderBottom;
}
@Nonnull
public ExcelStyle setBorderBottom (@Nullable final EExcelBorder eBorder)
{
m_eBorderBottom = eBorder;
return this;
}
@Nullable
public EExcelBorder getBorderLeft ()
{
return m_eBorderLeft;
}
@Nonnull
public ExcelStyle setBorderLeft (@Nullable final EExcelBorder eBorder)
{
m_eBorderLeft = eBorder;
return this;
}
@Nonnull
public ExcelStyle setBorder (@Nullable final EExcelBorder eBorder)
{
return setBorderTop (eBorder).setBorderRight (eBorder).setBorderBottom (eBorder).setBorderLeft (eBorder);
}
public int getFontIndex ()
{
return m_nFontIndex;
}
/**
* Set the index of the font to use. The font must have been previously
* created via Workbook.createFont()!
*
* @param nFontIndex
* The font index to use. Values < 0 indicate no font to use
* @return this
*/
@Nonnull
public ExcelStyle setFontIndex (final int nFontIndex)
{
m_nFontIndex = nFontIndex;
return this;
}
/**
* Set the index of the font to use. The font must have been previously
* created via Workbook.createFont()!
*
* @param aFont
* The font to use. May not be null
.
* @return this
*/
@Nonnull
public ExcelStyle setFont (@Nonnull final Font aFont)
{
ValueEnforcer.notNull (aFont, "Font");
return setFontIndex (aFont.getIndexAsInt ());
}
@Nonnull
public ExcelStyle getClone ()
{
return new ExcelStyle (this);
}
public void fillCellStyle (@Nonnull final Workbook aWB,
@Nonnull final CellStyle aCS,
@Nonnull final CreationHelper aCreationHelper)
{
if (m_eAlign != null)
aCS.setAlignment (m_eAlign.getValue ());
if (m_eVAlign != null)
aCS.setVerticalAlignment (m_eVAlign.getValue ());
aCS.setWrapText (m_bWrapText);
if (m_sDataFormat != null)
aCS.setDataFormat (aCreationHelper.createDataFormat ().getFormat (m_sDataFormat));
if (m_eFillBackgroundColor != null)
aCS.setFillBackgroundColor (m_eFillBackgroundColor.getIndex ());
if (m_eFillForegroundColor != null)
aCS.setFillForegroundColor (m_eFillForegroundColor.getIndex ());
if (m_eFillPattern != null)
aCS.setFillPattern (m_eFillPattern.getValue ());
if (m_eBorderTop != null)
aCS.setBorderTop (m_eBorderTop.getValue ());
if (m_eBorderRight != null)
aCS.setBorderRight (m_eBorderRight.getValue ());
if (m_eBorderBottom != null)
aCS.setBorderBottom (m_eBorderBottom.getValue ());
if (m_eBorderLeft != null)
aCS.setBorderLeft (m_eBorderLeft.getValue ());
if (m_nFontIndex >= 0)
aCS.setFont (aWB.getFontAt (m_nFontIndex));
}
@Override
public boolean equals (final Object o)
{
if (o == this)
return true;
if (!(o instanceof ExcelStyle))
return false;
final ExcelStyle rhs = (ExcelStyle) o;
return EqualsUtils.equals (m_eAlign, rhs.m_eAlign) &&
EqualsUtils.equals (m_eVAlign, rhs.m_eVAlign) &&
m_bWrapText == rhs.m_bWrapText &&
EqualsUtils.equals (m_sDataFormat, rhs.m_sDataFormat) &&
EqualsUtils.equals (m_eFillBackgroundColor, rhs.m_eFillBackgroundColor) &&
EqualsUtils.equals (m_eFillForegroundColor, rhs.m_eFillForegroundColor) &&
EqualsUtils.equals (m_eFillPattern, rhs.m_eFillPattern) &&
EqualsUtils.equals (m_eBorderTop, rhs.m_eBorderTop) &&
EqualsUtils.equals (m_eBorderRight, rhs.m_eBorderRight) &&
EqualsUtils.equals (m_eBorderBottom, rhs.m_eBorderBottom) &&
EqualsUtils.equals (m_eBorderLeft, rhs.m_eBorderLeft) &&
m_nFontIndex == rhs.m_nFontIndex;
}
@Override
public int hashCode ()
{
return new HashCodeGenerator (this).append (m_eAlign)
.append (m_eVAlign)
.append (m_bWrapText)
.append (m_sDataFormat)
.append (m_eFillBackgroundColor)
.append (m_eFillForegroundColor)
.append (m_eFillPattern)
.append (m_eBorderTop)
.append (m_eBorderRight)
.append (m_eBorderBottom)
.append (m_eBorderLeft)
.append (m_nFontIndex)
.getHashCode ();
}
@Override
public String toString ()
{
return new ToStringGenerator (this).appendIfNotNull ("align", m_eAlign)
.appendIfNotNull ("verticalAlign", m_eVAlign)
.append ("wrapText", m_bWrapText)
.appendIfNotNull ("dataFormat", m_sDataFormat)
.appendIfNotNull ("fillBackgroundColor", m_eFillBackgroundColor)
.appendIfNotNull ("fillForegroundColor", m_eFillForegroundColor)
.appendIfNotNull ("fillPattern", m_eFillPattern)
.appendIfNotNull ("borderTop", m_eBorderTop)
.appendIfNotNull ("borderRight", m_eBorderRight)
.appendIfNotNull ("borderBottom", m_eBorderBottom)
.appendIfNotNull ("borderLeft", m_eBorderLeft)
.append ("fontIndex", m_nFontIndex)
.toString ();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy