From a9623d08af5cfc9e3374ddc68f018d177521864a Mon Sep 17 00:00:00 2001
From: Yegor Kozlov
+ * Additional rules:
+ *
+ *
+ *
+ * When there is also an indent value to apply, both the left and right side of the cell + * are padded by the indent value. + *
+ *A 'word' is a set of characters with no space character in them.
+ *Two lines inside a cell are separated by a carriage return.
+ */ + DISTRIBUTED +} diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/VerticalAlignment.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/VerticalAlignment.java new file mode 100755 index 0000000000..e583336108 --- /dev/null +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/VerticalAlignment.java @@ -0,0 +1,69 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You 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 org.apache.poi.xssf.usermodel; + +/** + * This enumeration value indicates the type of vertical alignment for a cell, i.e., + * whether it is aligned top, bottom, vertically centered, justified or distributed. + */ +public enum VerticalAlignment { + /** + * The vertical alignment is aligned-to-top. + */ + TOP, + + /** + * The vertical alignment is centered across the height of the cell. + */ + CENTER, + + /** + * The vertical alignment is aligned-to-bottom. + */ + BOTTOM, + + /** + *+ * When text direction is horizontal: the vertical alignment of lines of text is distributed vertically, + * where each line of text inside the cell is evenly distributed across the height of the cell, + * with flush top and bottom margins. + *
+ *+ * When text direction is vertical: similar behavior as horizontal justification. + * The alignment is justified (flush top and bottom in this case). For each line of text, each + * line of the wrapped text in a cell is aligned to the top and bottom (except the last line). + * If no single line of text wraps in the cell, then the text is not justified. + *
+ */ + JUSTIFY, + + /** + *+ * When text direction is horizontal: the vertical alignment of lines of text is distributed vertically, + * where each line of text inside the cell is evenly distributed across the height of the cell, + * with flush top + *
+ *+ * When text direction is vertical: behaves exactly as distributed horizontal alignment. + * The first words in a line of text (appearing at the top of the cell) are flush + * with the top edge of the cell, and the last words of a line of text are flush with the bottom edge of the cell, + * and the line of text is distributed evenly from top to bottom. + *
+ */ + DISTRIBUTED +} diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java index aaa37f3026..cf1efaa990 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java @@ -17,10 +17,7 @@ package org.apache.poi.xssf.usermodel; -import org.apache.poi.ss.usermodel.CellStyle; -import org.apache.poi.ss.usermodel.Font; -import org.apache.poi.ss.usermodel.StylesSource; -import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.model.StylesTable; import org.apache.poi.xssf.usermodel.extensions.XSSFCellAlignment; import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder; @@ -31,410 +28,409 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCellAlignment; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCellProtection; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf; import org.openxmlformats.schemas.spreadsheetml.x2006.main.STBorderStyle; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.STHorizontalAlignment; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignment; public class XSSFCellStyle implements CellStyle { - private int cellXfId; - private int cellStyleXfId; - private StylesSource stylesSource; - private CTXf cellXf; - private CTXf cellStyleXf; - private XSSFCellBorder cellBorder; - private XSSFCellFill cellFill; - private XSSFFont font; - private XSSFCellAlignment cellAlignment; - - /** - * Creates a Cell Style from the supplied parts - * @param cellXf The main XF for the cell - * @param cellStyleXf Optional, style xf - * @param stylesSource Styles Source to work off - */ - public XSSFCellStyle(int cellXfId, int cellStyleXfId, StylesTable stylesSource) { - this.cellXfId = cellXfId; - this.cellStyleXfId = cellStyleXfId; - this.stylesSource = stylesSource; - this.cellXf = stylesSource.getCellXfAt(this.cellXfId); - this.cellStyleXf = stylesSource.getCellStyleXfAt(this.cellStyleXfId); - } - - /** - * Used so that StylesSource can figure out our location - */ - public CTXf getCoreXf() { - return cellXf; - } - /** - * Used so that StylesSource can figure out our location - */ - public CTXf getStyleXf() { - return cellStyleXf; - } - - /** - * Creates an empty Cell Style - */ - public XSSFCellStyle(StylesSource stylesSource) { - this.stylesSource = stylesSource; - - // We need a new CTXf for the main styles - // TODO decide on a style ctxf - cellXf = CTXf.Factory.newInstance(); - cellStyleXf = null; - } - /** - * Verifies that this style belongs to the supplied Workbook - * Styles Source. - * Will throw an exception if it belongs to a different one. - * This is normally called when trying to assign a style to a - * cell, to ensure the cell and the style are from the same - * workbook (if they're not, it won't work) - * @throws IllegalArgumentException if there's a workbook mis-match - */ - public void verifyBelongsToStylesSource(StylesSource src) { - if(this.stylesSource != src) { - throw new IllegalArgumentException("This Style does not belong to the supplied Workbook Stlyes Source. Are you trying to assign a style from one workbook to the cell of a differnt workbook?"); - } - } + private int cellXfId; + private int cellStyleXfId; + private StylesSource stylesSource; + private CTXf cellXf; + private CTXf cellStyleXf; + private XSSFCellBorder cellBorder; + private XSSFCellFill cellFill; + private XSSFFont font; + private XSSFCellAlignment cellAlignment; + + /** + * Creates a Cell Style from the supplied parts + * @param cellXf The main XF for the cell + * @param cellStyleXf Optional, style xf + * @param stylesSource Styles Source to work off + */ + public XSSFCellStyle(int cellXfId, int cellStyleXfId, StylesTable stylesSource) { + this.cellXfId = cellXfId; + this.cellStyleXfId = cellStyleXfId; + this.stylesSource = stylesSource; + this.cellXf = stylesSource.getCellXfAt(this.cellXfId); + this.cellStyleXf = stylesSource.getCellStyleXfAt(this.cellStyleXfId); + } + + /** + * Used so that StylesSource can figure out our location + */ + public CTXf getCoreXf() { + return cellXf; + } + /** + * Used so that StylesSource can figure out our location + */ + public CTXf getStyleXf() { + return cellStyleXf; + } + + /** + * Creates an empty Cell Style + */ + public XSSFCellStyle(StylesSource stylesSource) { + this.stylesSource = stylesSource; + + // We need a new CTXf for the main styles + // TODO decide on a style ctxf + cellXf = CTXf.Factory.newInstance(); + cellStyleXf = null; + } + + /** + * Verifies that this style belongs to the supplied Workbook + * Styles Source. + * Will throw an exception if it belongs to a different one. + * This is normally called when trying to assign a style to a + * cell, to ensure the cell and the style are from the same + * workbook (if they're not, it won't work) + * @throws IllegalArgumentException if there's a workbook mis-match + */ + public void verifyBelongsToStylesSource(StylesSource src) { + if(this.stylesSource != src) { + throw new IllegalArgumentException("This Style does not belong to the supplied Workbook Stlyes Source. Are you trying to assign a style from one workbook to the cell of a differnt workbook?"); + } + } /** * Clones all the style information from another - * XSSFCellStyle, onto this one. This + * XSSFCellStyle, onto this one. This * XSSFCellStyle will then have all the same * properties as the source, but the two may * be edited independently. - * Any stylings on this XSSFCellStyle will be lost! - * + * Any stylings on this XSSFCellStyle will be lost! + * * The source XSSFCellStyle could be from another * XSSFWorkbook if you like. This allows you to * copy styles from one XSSFWorkbook to another. */ public void cloneStyleFrom(CellStyle source) { - if(source instanceof XSSFCellStyle) { - this.cloneStyleFrom((XSSFCellStyle)source); - } - throw new IllegalArgumentException("Can only clone from one XSSFCellStyle to another, not between HSSFCellStyle and XSSFCellStyle"); - } + if(source instanceof XSSFCellStyle) { + this.cloneStyleFrom((XSSFCellStyle)source); + } + throw new IllegalArgumentException("Can only clone from one XSSFCellStyle to another, not between HSSFCellStyle and XSSFCellStyle"); + } public void cloneStyleFrom(XSSFCellStyle source) { - throw new IllegalStateException("TODO"); - } - - public short getAlignment() { - return (short)getAlignmentEnum().intValue(); - } - - public STHorizontalAlignment.Enum getAlignmentEnum() { - return getCellAlignment().getHorizontal(); - } + throw new IllegalStateException("TODO"); + } - public short getBorderBottom() { - return getBorderStyleAsShort(BorderSide.BOTTOM); - } - - public String getBorderBottomAsString() { - return getBorderStyleAsString(BorderSide.BOTTOM); - } + public short getAlignment() { + return (short)(getAlignmentEnum().ordinal()); + } - public short getBorderLeft() { - return getBorderStyleAsShort(BorderSide.LEFT); - } - - public String getBorderLeftAsString() { - return getBorderStyleAsString(BorderSide.LEFT); - } + public HorizontalAlignment getAlignmentEnum() { + return getCellAlignment().getHorizontal(); + } - public short getBorderRight() { - return getBorderStyleAsShort(BorderSide.RIGHT); - } - - public String getBorderRightAsString() { - return getBorderStyleAsString(BorderSide.RIGHT); - } + public short getBorderBottom() { + return getBorderStyleAsShort(BorderSide.BOTTOM); + } - public short getBorderTop() { - return getBorderStyleAsShort(BorderSide.TOP); - } - - public String getBorderTopAsString() { - return getBorderStyleAsString(BorderSide.TOP); - } + public String getBorderBottomAsString() { + return getBorderStyleAsString(BorderSide.BOTTOM); + } - public short getBottomBorderColor() { - return getBorderColorIndexed(BorderSide.BOTTOM); - } + public short getBorderLeft() { + return getBorderStyleAsShort(BorderSide.LEFT); + } - public short getDataFormat() { - return (short)cellXf.getNumFmtId(); - } - public String getDataFormatString() { - return stylesSource.getNumberFormatAt(getDataFormat()); - } + public String getBorderLeftAsString() { + return getBorderStyleAsString(BorderSide.LEFT); + } - public short getFillBackgroundColor() { - return (short) getCellFill().getFillBackgroundColor().getIndexed(); - } + public short getBorderRight() { + return getBorderStyleAsShort(BorderSide.RIGHT); + } - public short getFillForegroundColor() { - return (short) getCellFill().getFillForegroundColor().getIndexed(); - } + public String getBorderRightAsString() { + return getBorderStyleAsString(BorderSide.RIGHT); + } - public short getFillPattern() { - return (short) getCellFill().getPatternType().intValue(); - } + public short getBorderTop() { + return getBorderStyleAsShort(BorderSide.TOP); + } - public Font getFont(Workbook parentWorkbook) { - return getFont(); - } - - public Font getFont() { - if (font == null) { - font = (XSSFFont) ((StylesTable)stylesSource).getFontAt(getFontId()); - } - return font; - } + public String getBorderTopAsString() { + return getBorderStyleAsString(BorderSide.TOP); + } - public short getFontIndex() { - return (short) getFontId(); - } + public short getBottomBorderColor() { + return getBorderColorIndexed(BorderSide.BOTTOM); + } - public boolean getHidden() { - return getCellProtection().getHidden(); - } + public short getDataFormat() { + return (short)cellXf.getNumFmtId(); + } + public String getDataFormatString() { + return stylesSource.getNumberFormatAt(getDataFormat()); + } - public short getIndention() { - return (short) getCellAlignment().getIndent(); - } + public short getFillBackgroundColor() { + return (short) getCellFill().getFillBackgroundColor().getIndexed(); + } - public short getIndex() { - return (short) this.cellXfId; - } + public short getFillForegroundColor() { + return (short) getCellFill().getFillForegroundColor().getIndexed(); + } - public short getLeftBorderColor() { - return getBorderColorIndexed(BorderSide.LEFT); - } + public short getFillPattern() { + return (short) getCellFill().getPatternType().intValue(); + } - public boolean getLocked() { - return getCellProtection().getLocked(); - } + public Font getFont(Workbook parentWorkbook) { + return getFont(); + } - public short getRightBorderColor() { - return getBorderColorIndexed(BorderSide.RIGHT); - } + public Font getFont() { + if (font == null) { + font = (XSSFFont) ((StylesTable)stylesSource).getFontAt(getFontId()); + } + return font; + } - public short getRotation() { - return (short) getCellAlignment().getTextRotation(); - } + public short getFontIndex() { + return (short) getFontId(); + } - public short getTopBorderColor() { - return getBorderColorIndexed(BorderSide.TOP); - } + public boolean getHidden() { + return getCellProtection().getHidden(); + } - public short getVerticalAlignment() { - return (short) getVerticalAlignmentEnum().intValue(); - } - - public STVerticalAlignment.Enum getVerticalAlignmentEnum() { - return getCellAlignment().getVertical(); - } + public short getIndention() { + return (short) getCellAlignment().getIndent(); + } - public boolean getWrapText() { - return getCellAlignment().getWrapText(); - } + public short getIndex() { + return (short) this.cellXfId; + } - public void setAlignment(short align) { - getCellAlignment().setHorizontal(STHorizontalAlignment.Enum.forInt(align)); - } - - public void setAlignementEnum(STHorizontalAlignment.Enum align) { - getCellAlignment().setHorizontal(align); - } + public short getLeftBorderColor() { + return getBorderColorIndexed(BorderSide.LEFT); + } - public void setBorderBottom(short border) { - setBorderBottomEnum(STBorderStyle.Enum.forInt(border)); - } - - public void setBorderBottomEnum(STBorderStyle.Enum style) { - getCellBorder().setBorderStyle(BorderSide.BOTTOM, style); - } + public boolean getLocked() { + return getCellProtection().getLocked(); + } - public void setBorderLeft(short border) { - setBorderLeftEnum(STBorderStyle.Enum.forInt(border)); - } - - public void setBorderLeftEnum(STBorderStyle.Enum style) { - getCellBorder().setBorderStyle(BorderSide.LEFT, style); - } + public short getRightBorderColor() { + return getBorderColorIndexed(BorderSide.RIGHT); + } - public void setBorderRight(short border) { - setBorderRightEnum(STBorderStyle.Enum.forInt(border)); - } - - public void setBorderRightEnum(STBorderStyle.Enum style) { - getCellBorder().setBorderStyle(BorderSide.RIGHT, style); - } + public short getRotation() { + return (short) getCellAlignment().getTextRotation(); + } - public void setBorderTop(short border) { - setBorderTopEnum(STBorderStyle.Enum.forInt(border)); - } - - public void setBorderTopEnum(STBorderStyle.Enum style) { - getCellBorder().setBorderStyle(BorderSide.TOP, style); - } + public short getTopBorderColor() { + return getBorderColorIndexed(BorderSide.TOP); + } - public void setBottomBorderColor(short color) { - setBorderColorIndexed(BorderSide.BOTTOM, color); - } + public short getVerticalAlignment() { + return (short) (getVerticalAlignmentEnum().ordinal()); + } - public void setDataFormat(short fmt) { - cellXf.setNumFmtId((long)fmt); - } + public VerticalAlignment getVerticalAlignmentEnum() { + return getCellAlignment().getVertical(); + } - public void setFillBackgroundColor(short bg) { - getCellFill().setFillBackgroundColor(bg); - } + public boolean getWrapText() { + return getCellAlignment().getWrapText(); + } - public void setFillForegroundColor(short bg) { - getCellFill().setFillForegroundColor(bg); - } + public void setAlignment(short align) { + getCellAlignment().setHorizontal(HorizontalAlignment.values()[align]); + } - public void setFillPattern(short fp) { - // TODO Auto-generated method stub - - } + public void setAlignment(HorizontalAlignment align) { + setAlignment((short)align.ordinal()); + } - public void setFont(Font font) { - if(font!=null){ - long index=this.stylesSource.putFont(font); - this.cellXf.setFontId(index); - } - } + public void setBorderBottom(short border) { + setBorderBottomEnum(STBorderStyle.Enum.forInt(border)); + } - public void setHidden(boolean hidden) { - getCellProtection().setHidden(hidden); - } + public void setBorderBottomEnum(STBorderStyle.Enum style) { + getCellBorder().setBorderStyle(BorderSide.BOTTOM, style); + } - public void setIndention(short indent) { - getCellAlignment().setIndent(indent); - } + public void setBorderLeft(short border) { + setBorderLeftEnum(STBorderStyle.Enum.forInt(border)); + } - public void setLeftBorderColor(short color) { - setBorderColorIndexed(BorderSide.LEFT, color); - } + public void setBorderLeftEnum(STBorderStyle.Enum style) { + getCellBorder().setBorderStyle(BorderSide.LEFT, style); + } - public void setLocked(boolean locked) { - getCellProtection().setLocked(locked); - } + public void setBorderRight(short border) { + setBorderRightEnum(STBorderStyle.Enum.forInt(border)); + } - public void setRightBorderColor(short color) { - setBorderColorIndexed(BorderSide.RIGHT, color); - } + public void setBorderRightEnum(STBorderStyle.Enum style) { + getCellBorder().setBorderStyle(BorderSide.RIGHT, style); + } - public void setRotation(short rotation) { - getCellAlignment().setTextRotation(rotation); - } + public void setBorderTop(short border) { + setBorderTopEnum(STBorderStyle.Enum.forInt(border)); + } - public void setTopBorderColor(short color) { - setBorderColorIndexed(BorderSide.TOP, color); - } + public void setBorderTopEnum(STBorderStyle.Enum style) { + getCellBorder().setBorderStyle(BorderSide.TOP, style); + } - public void setVerticalAlignment(short align) { - setVerticalAlignmentEnum(STVerticalAlignment.Enum.forInt(align)); - } + public void setBottomBorderColor(short color) { + setBorderColorIndexed(BorderSide.BOTTOM, color); + } - public void setVerticalAlignmentEnum(STVerticalAlignment.Enum align) { - getCellAlignment().setVertical(align); - } + public void setDataFormat(short fmt) { + cellXf.setNumFmtId((long)fmt); + } - public void setWrapText(boolean wrapped) { - getCellAlignment().setWrapText(wrapped); - } + public void setFillBackgroundColor(short bg) { + getCellFill().setFillBackgroundColor(bg); + } - public XSSFColor getBorderColor(BorderSide side) { - return getCellBorder().getBorderColor(side); - } - - public void setBorderColor(BorderSide side, XSSFColor color) { - getCellBorder().setBorderColor(side, color); - } + public void setFillForegroundColor(short bg) { + getCellFill().setFillForegroundColor(bg); + } - private XSSFCellBorder getCellBorder() { - if (cellBorder == null) { - // TODO make a common Cell Border object - cellBorder = ((StylesTable)stylesSource).getBorderAt(getBorderId()); - } - return cellBorder; - } + public void setFillPattern(short fp) { + // TODO Auto-generated method stub - private int getBorderId() { - if (cellXf.isSetBorderId()) { - return (int) cellXf.getBorderId(); - } - return (int) cellStyleXf.getBorderId(); - } - - private XSSFCellFill getCellFill() { - if (cellFill == null) { - cellFill = ((StylesTable)stylesSource).getFillAt(getFillId()); - } - return cellFill; - } - - private int getFillId() { - if (cellXf.isSetFillId()) { - return (int) cellXf.getFillId(); - } - return (int) cellStyleXf.getFillId(); - } - - private int getFontId() { - if (cellXf.isSetFontId()) { - return (int) cellXf.getFontId(); - } - return (int) cellStyleXf.getFontId(); - } + } - private CTCellProtection getCellProtection() { - if (cellXf.getProtection() == null) { - cellXf.addNewProtection(); - } - return cellXf.getProtection(); - } + public void setFont(Font font) { + if(font!=null){ + long index=this.stylesSource.putFont(font); + this.cellXf.setFontId(index); + } + } - private XSSFCellAlignment getCellAlignment() { - if (this.cellAlignment == null) { - this.cellAlignment = new XSSFCellAlignment(getCTCellAlignment()); - } - return this.cellAlignment; - } + public void setHidden(boolean hidden) { + getCellProtection().setHidden(hidden); + } - private CTCellAlignment getCTCellAlignment() { - if (cellXf.getAlignment() == null) { - cellXf.setAlignment(CTCellAlignment.Factory.newInstance()); - } - return cellXf.getAlignment(); - } + public void setIndention(short indent) { + getCellAlignment().setIndent(indent); + } - private short getBorderColorIndexed(BorderSide side) { - return (short) getBorderColor(side).getIndexed(); - } - - private void setBorderColorIndexed(BorderSide side, long color) { - getBorderColor(side).setIndexed(color); - } + public void setLeftBorderColor(short color) { + setBorderColorIndexed(BorderSide.LEFT, color); + } - private short getBorderStyleAsShort(BorderSide side) { - return (short) (getBorderStyle(side).intValue() - 1); - } - - private String getBorderStyleAsString(BorderSide side) { - return getBorderStyle(side).toString(); - } + public void setLocked(boolean locked) { + getCellProtection().setLocked(locked); + } + + public void setRightBorderColor(short color) { + setBorderColorIndexed(BorderSide.RIGHT, color); + } + + public void setRotation(short rotation) { + getCellAlignment().setTextRotation(rotation); + } + + public void setTopBorderColor(short color) { + setBorderColorIndexed(BorderSide.TOP, color); + } + + public void setVerticalAlignment(short align) { + getCellAlignment().setVertical(VerticalAlignment.values()[align]); + } + + public void setVerticalAlignment(VerticalAlignment align) { + getCellAlignment().setVertical(align); + } + + public void setWrapText(boolean wrapped) { + getCellAlignment().setWrapText(wrapped); + } + + public XSSFColor getBorderColor(BorderSide side) { + return getCellBorder().getBorderColor(side); + } + + public void setBorderColor(BorderSide side, XSSFColor color) { + getCellBorder().setBorderColor(side, color); + } + + private XSSFCellBorder getCellBorder() { + if (cellBorder == null) { + // TODO make a common Cell Border object + cellBorder = ((StylesTable)stylesSource).getBorderAt(getBorderId()); + } + return cellBorder; + } + + private int getBorderId() { + if (cellXf.isSetBorderId()) { + return (int) cellXf.getBorderId(); + } + return (int) cellStyleXf.getBorderId(); + } + + private XSSFCellFill getCellFill() { + if (cellFill == null) { + cellFill = ((StylesTable)stylesSource).getFillAt(getFillId()); + } + return cellFill; + } + + private int getFillId() { + if (cellXf.isSetFillId()) { + return (int) cellXf.getFillId(); + } + return (int) cellStyleXf.getFillId(); + } + + private int getFontId() { + if (cellXf.isSetFontId()) { + return (int) cellXf.getFontId(); + } + return (int) cellStyleXf.getFontId(); + } + + private CTCellProtection getCellProtection() { + if (cellXf.getProtection() == null) { + cellXf.addNewProtection(); + } + return cellXf.getProtection(); + } + + public XSSFCellAlignment getCellAlignment() { + if (this.cellAlignment == null) { + this.cellAlignment = new XSSFCellAlignment(getCTCellAlignment()); + } + return this.cellAlignment; + } + + private CTCellAlignment getCTCellAlignment() { + if (cellXf.getAlignment() == null) { + cellXf.setAlignment(CTCellAlignment.Factory.newInstance()); + } + return cellXf.getAlignment(); + } + + private short getBorderColorIndexed(BorderSide side) { + return (short) getBorderColor(side).getIndexed(); + } + + private void setBorderColorIndexed(BorderSide side, long color) { + getBorderColor(side).setIndexed(color); + } + + private short getBorderStyleAsShort(BorderSide side) { + return (short) (getBorderStyle(side).intValue() - 1); + } + + private String getBorderStyleAsString(BorderSide side) { + return getBorderStyle(side).toString(); + } + + private STBorderStyle.Enum getBorderStyle(BorderSide side) { + return getCellBorder().getBorderStyle(side); + } - private STBorderStyle.Enum getBorderStyle(BorderSide side) { - return getCellBorder().getBorderStyle(side); - } - } diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellAlignment.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellAlignment.java index 71a32d4df3..5e448b6f0a 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellAlignment.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellAlignment.java @@ -19,59 +19,71 @@ package org.apache.poi.xssf.usermodel.extensions; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCellAlignment; import org.openxmlformats.schemas.spreadsheetml.x2006.main.STHorizontalAlignment; import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignment; +import org.apache.poi.xssf.usermodel.HorizontalAlignment; +import org.apache.poi.xssf.usermodel.VerticalAlignment; +/** + * Cell settings avaiable in the Format/Alignment tab + */ public class XSSFCellAlignment { - - private CTCellAlignment cellAlignement; - - public XSSFCellAlignment(CTCellAlignment cellAlignment) { - this.cellAlignement = cellAlignment; - } - - public STVerticalAlignment.Enum getVertical() { - if (cellAlignement.getVertical() == null) { - cellAlignement.setVertical(STVerticalAlignment.TOP); - } - return cellAlignement.getVertical(); - } - - public void setVertical(STVerticalAlignment.Enum vertical) { - cellAlignement.setVertical(vertical); - } - - public STHorizontalAlignment.Enum getHorizontal() { - if (cellAlignement.getHorizontal() == null) { - cellAlignement.setHorizontal(STHorizontalAlignment.GENERAL); - } - return cellAlignement.getHorizontal(); - } - - public void setHorizontal(STHorizontalAlignment.Enum horizontal) { - cellAlignement.setHorizontal(horizontal); - } - - public long getIndent() { - return cellAlignement.getIndent(); - } - - public void setIndent(long indent) { - cellAlignement.setIndent(indent); - } - - public long getTextRotation() { - return cellAlignement.getTextRotation(); - } - - public void setTextRotation(long rotation) { - cellAlignement.setTextRotation(rotation); - } - - public boolean getWrapText() { - return cellAlignement.getWrapText(); - } - - public void setWrapText(boolean wrapped) { - cellAlignement.setWrapText(wrapped); - } + + private CTCellAlignment cellAlignement; + + public XSSFCellAlignment(CTCellAlignment cellAlignment) { + this.cellAlignement = cellAlignment; + } + + public VerticalAlignment getVertical() { + STVerticalAlignment.Enum align = cellAlignement.getVertical(); + if(align == null) align = STVerticalAlignment.BOTTOM; + + return VerticalAlignment.values()[align.intValue() - 1]; + } + + public void setVertical(VerticalAlignment vertical) { + cellAlignement.setVertical(STVerticalAlignment.Enum.forInt(vertical.ordinal() + 1)); + } + + public HorizontalAlignment getHorizontal() { + STHorizontalAlignment.Enum align = cellAlignement.getHorizontal(); + if(align == null) align = STHorizontalAlignment.GENERAL; + + return HorizontalAlignment.values()[align.intValue() - 1]; + } + + public void setHorizontal(HorizontalAlignment align) { + cellAlignement.setHorizontal(STHorizontalAlignment.Enum.forInt(align.ordinal() + 1)); + } + + public long getIndent() { + return cellAlignement.getIndent(); + } + + public void setIndent(long indent) { + cellAlignement.setIndent(indent); + } + + public long getTextRotation() { + return cellAlignement.getTextRotation(); + } + + public void setTextRotation(long rotation) { + cellAlignement.setTextRotation(rotation); + } + + public boolean getWrapText() { + return cellAlignement.getWrapText(); + } + + public void setWrapText(boolean wrapped) { + cellAlignement.setWrapText(wrapped); + } + + /** + * Access to low-level data + */ + public CTCellAlignment getCTCellAlignment() { + return cellAlignement; + } } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java index e7e9bb7606..1ce50656b4 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java @@ -19,324 +19,280 @@ package org.apache.poi.xssf.usermodel; import junit.framework.TestCase; -import org.apache.poi.ss.usermodel.StylesSource; import org.apache.poi.xssf.model.StylesTable; import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder; import org.apache.poi.xssf.usermodel.extensions.XSSFCellFill; import org.apache.poi.xssf.usermodel.extensions.XSSFColor; import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder.BorderSide; -import org.apache.poi.xssf.util.IndexedColors; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBorder; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCellXfs; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFill; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFont; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPatternFill; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTStylesheet; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.STBorderStyle; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.STHorizontalAlignment; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.STPatternType; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignment; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.*; public class TestXSSFCellStyle extends TestCase { - - private StylesTable stylesTable; - private CTBorder ctBorderA; - private CTFill ctFill; - private CTFont ctFont; - private CTXf cellStyleXf; - private CTXf cellXf; - private CTCellXfs cellXfs; - private XSSFCellStyle cellStyle; - private CTStylesheet ctStylesheet; - public void setUp() { - stylesTable = new StylesTable(); - - ctStylesheet = stylesTable._getRawStylesheet(); - - // Until we do XSSFBorder properly, cheat - ctBorderA = CTBorder.Factory.newInstance(); - XSSFCellBorder borderA = new XSSFCellBorder(ctBorderA); - long borderId = stylesTable.putBorder(borderA); - assertEquals(1, borderId); - - XSSFCellBorder borderB = new XSSFCellBorder(); - assertEquals(2, stylesTable.putBorder(borderB)); - - ctFill = CTFill.Factory.newInstance(); - XSSFCellFill fill = new XSSFCellFill(ctFill); - long fillId = stylesTable.putFill(fill); - assertEquals(1, fillId); - - ctFont = CTFont.Factory.newInstance(); - XSSFFont font = new XSSFFont(ctFont); - long fontId = stylesTable.putFont(font); - assertEquals(1, fontId); - - cellStyleXf = ctStylesheet.addNewCellStyleXfs().addNewXf(); - cellStyleXf.setBorderId(1); - cellStyleXf.setFillId(1); - cellStyleXf.setFontId(1); - cellXfs = ctStylesheet.addNewCellXfs(); - cellXf = cellXfs.addNewXf(); - cellXf.setXfId(1); - stylesTable.putCellStyleXf(cellStyleXf); - stylesTable.putCellXf(cellXf); - cellStyle = new XSSFCellStyle(1, 1, stylesTable); - } - - public void testGetSetBorderBottom() { - ctBorderA.addNewBottom().setStyle(STBorderStyle.THIN); - assertEquals((short)1, cellStyle.getBorderBottom()); - cellStyle.setBorderBottom((short) 2); - assertEquals(STBorderStyle.THIN, ctBorderA.getBottom().getStyle()); - cellStyle.setBorderBottomEnum(STBorderStyle.THICK); - assertEquals(6, ctBorderA.getBottom().getStyle().intValue()); - } + private StylesTable stylesTable; + private CTBorder ctBorderA; + private CTFill ctFill; + private CTFont ctFont; + private CTXf cellStyleXf; + private CTXf cellXf; + private CTCellXfs cellXfs; + private XSSFCellStyle cellStyle; + private CTStylesheet ctStylesheet; - public void testGetBorderBottomAsString() { - ctBorderA.addNewBottom().setStyle(STBorderStyle.THIN); - assertEquals("thin", cellStyle.getBorderBottomAsString()); - } - - public void testGetSetBorderRight() { - ctBorderA.addNewRight().setStyle(STBorderStyle.MEDIUM); - assertEquals((short)2, cellStyle.getBorderRight()); - cellStyle.setBorderRight((short) 2); - assertEquals(STBorderStyle.THIN, ctBorderA.getRight().getStyle()); - cellStyle.setBorderRightEnum(STBorderStyle.THICK); - assertEquals(6, ctBorderA.getRight().getStyle().intValue()); - } + public void setUp() { + stylesTable = new StylesTable(); - public void testGetBorderRightAsString() { - ctBorderA.addNewRight().setStyle(STBorderStyle.MEDIUM); - assertEquals("medium", cellStyle.getBorderRightAsString()); - } - - public void testGetSetBorderLeft() { - ctBorderA.addNewLeft().setStyle(STBorderStyle.DASHED); - assertEquals((short)3, cellStyle.getBorderLeft()); - cellStyle.setBorderLeft((short) 2); - assertEquals(STBorderStyle.THIN, ctBorderA.getLeft().getStyle()); - cellStyle.setBorderLeftEnum(STBorderStyle.THICK); - assertEquals(6, ctBorderA.getLeft().getStyle().intValue()); - } + ctStylesheet = stylesTable._getRawStylesheet(); - public void testGetBorderLeftAsString() { - ctBorderA.addNewLeft().setStyle(STBorderStyle.DASHED); - assertEquals("dashed", cellStyle.getBorderLeftAsString()); - } - - public void testGetSetBorderTop() { - ctBorderA.addNewTop().setStyle(STBorderStyle.HAIR); - assertEquals((short)7, cellStyle.getBorderTop()); - cellStyle.setBorderTop((short) 2); - assertEquals(STBorderStyle.THIN, ctBorderA.getTop().getStyle()); - cellStyle.setBorderTopEnum(STBorderStyle.THICK); - assertEquals(6, ctBorderA.getTop().getStyle().intValue()); - } + // Until we do XSSFBorder properly, cheat + ctBorderA = CTBorder.Factory.newInstance(); + XSSFCellBorder borderA = new XSSFCellBorder(ctBorderA); + long borderId = stylesTable.putBorder(borderA); + assertEquals(1, borderId); - public void testGetBorderTopAsString() { - ctBorderA.addNewTop().setStyle(STBorderStyle.HAIR); - assertEquals("hair", cellStyle.getBorderTopAsString()); - } - - public void testGetSetBottomBorderColor() { - CTColor ctColor = ctBorderA.addNewBottom().addNewColor(); - ctColor.setIndexed(2); - XSSFColor color = new XSSFColor(ctColor); - assertEquals((short)2, cellStyle.getBottomBorderColor()); - CTColor anotherCtColor = CTColor.Factory.newInstance(); - anotherCtColor.setIndexed(4); - anotherCtColor.setTheme(3); - anotherCtColor.setRgb("1234".getBytes()); - XSSFColor anotherColor = new XSSFColor(anotherCtColor); - cellStyle.setBorderColor(BorderSide.BOTTOM, anotherColor); - assertEquals((short)4, cellStyle.getBottomBorderColor()); - assertEquals(new String("1234".getBytes()), new String(cellStyle.getBorderColor(BorderSide.BOTTOM).getRgb())); - } - - public void testGetSetTopBorderColor() { - CTColor ctColor = ctBorderA.addNewTop().addNewColor(); - ctColor.setIndexed(5); - XSSFColor color = new XSSFColor(ctColor); - assertEquals((short)5, cellStyle.getTopBorderColor()); - CTColor anotherCtColor = CTColor.Factory.newInstance(); - anotherCtColor.setIndexed(7); - anotherCtColor.setTheme(3); - anotherCtColor.setRgb("abcd".getBytes()); - XSSFColor anotherColor = new XSSFColor(anotherCtColor); - cellStyle.setBorderColor(BorderSide.TOP, anotherColor); - assertEquals((short)7, cellStyle.getTopBorderColor()); - assertEquals(new String("abcd".getBytes()), new String(cellStyle.getBorderColor(BorderSide.TOP).getRgb())); - } - - public void testGetSetLeftBorderColor() { - CTColor ctColor = ctBorderA.addNewLeft().addNewColor(); - ctColor.setIndexed(2); - XSSFColor color = new XSSFColor(ctColor); - assertEquals((short)2, cellStyle.getLeftBorderColor()); - CTColor anotherCtColor = CTColor.Factory.newInstance(); - anotherCtColor.setIndexed(4); - anotherCtColor.setTheme(3); - anotherCtColor.setRgb("1234".getBytes()); - XSSFColor anotherColor = new XSSFColor(anotherCtColor); - cellStyle.setBorderColor(BorderSide.LEFT, anotherColor); - assertEquals((short)4, cellStyle.getLeftBorderColor()); - assertEquals(new String("1234".getBytes()), new String(cellStyle.getBorderColor(BorderSide.LEFT).getRgb())); - } - - public void testGetSetRightBorderColor() { - CTColor ctColor = ctBorderA.addNewRight().addNewColor(); - ctColor.setIndexed(8); - XSSFColor color = new XSSFColor(ctColor); - assertEquals((short)8, cellStyle.getRightBorderColor()); - CTColor anotherCtColor = CTColor.Factory.newInstance(); - anotherCtColor.setIndexed(14); - anotherCtColor.setTheme(3); - anotherCtColor.setRgb("af67".getBytes()); - XSSFColor anotherColor = new XSSFColor(anotherCtColor); - cellStyle.setBorderColor(BorderSide.RIGHT, anotherColor); - assertEquals((short)14, cellStyle.getRightBorderColor()); - assertEquals(new String("af67".getBytes()), new String(cellStyle.getBorderColor(BorderSide.RIGHT).getRgb())); - } - - public void testGetFillBackgroundColor() { - CTPatternFill ctPatternFill = ctFill.addNewPatternFill(); - CTColor ctBgColor = ctPatternFill.addNewBgColor(); - ctBgColor.setIndexed(4); - assertEquals(4, cellStyle.getFillBackgroundColor()); - } - - public void testGetFillForegroundColor() { - CTPatternFill ctPatternFill = ctFill.addNewPatternFill(); - CTColor ctFgColor = ctPatternFill.addNewFgColor(); - ctFgColor.setIndexed(5); - assertEquals(5, cellStyle.getFillForegroundColor()); - } - - public void testGetFillPattern() { - CTPatternFill ctPatternFill = ctFill.addNewPatternFill(); - ctPatternFill.setPatternType(STPatternType.DARK_DOWN); - assertEquals(8, cellStyle.getFillPattern()); - } - - public void testGetSetFont() { - assertNotNull(this.cellStyle.getFont()); - - StylesSource stylesSource=new StylesTable(); - XSSFFont xssfFont=new XSSFFont(); - xssfFont.setFontName("Arial"); - stylesSource.putFont(xssfFont); - XSSFCellStyle cellStyle=new XSSFCellStyle(stylesSource); - - XSSFFont xssfFont2=new XSSFFont(); - xssfFont2.setFontName("courier"); - xssfFont2.setFontHeightInPoints((short)10); - - cellStyle.setFont(xssfFont2); - assertEquals(2,cellStyle.getFontIndex()); - assertEquals(xssfFont2.getFontName(),cellStyle.getFont().getFontName()); - assertEquals(stylesSource.getFontAt(2).getFontHeightInPoints(),cellStyle.getFont().getFontHeightInPoints()); + XSSFCellBorder borderB = new XSSFCellBorder(); + assertEquals(2, stylesTable.putBorder(borderB)); - cellStyle.setFont(xssfFont); - assertEquals(1,cellStyle.getFontIndex()); - - - XSSFFont xssfFont3=new XSSFFont(); - xssfFont3.setFontName("Arial"); - cellStyle.setFont(xssfFont3); - assertNotSame(1,cellStyle.getFontIndex()); - - } - - public void testGetSetHidden() { - assertFalse(cellStyle.getHidden()); - cellXf.getProtection().setHidden(true); - assertTrue(cellStyle.getHidden()); - cellStyle.setHidden(false); - assertFalse(cellStyle.getHidden()); - } - - public void testGetSetLocked() { - assertFalse(cellStyle.getLocked()); - cellXf.getProtection().setLocked(true); - assertTrue(cellStyle.getLocked()); - cellStyle.setLocked(false); - assertFalse(cellStyle.getLocked()); - } - - public void testGetSetIndent() { - assertEquals((short)0, cellStyle.getIndention()); - cellXf.getAlignment().setIndent(3); - assertEquals((short)3, cellStyle.getIndention()); - cellStyle.setIndention((short) 13); - assertEquals((short)13, cellXf.getAlignment().getIndent()); - } - - public void testGetSetAlignement() { - assertEquals(1, cellStyle.getAlignment()); - cellStyle.setAlignment((short)2); - assertEquals(STHorizontalAlignment.LEFT, cellStyle.getAlignmentEnum()); - cellStyle.setAlignementEnum(STHorizontalAlignment.JUSTIFY); - assertEquals((short)6, cellStyle.getAlignment()); - } - - public void testGetSetVerticalAlignment() { - assertEquals(1, cellStyle.getVerticalAlignment()); - cellStyle.setVerticalAlignment((short)2); - assertEquals(STVerticalAlignment.CENTER, cellStyle.getVerticalAlignmentEnum()); - cellStyle.setVerticalAlignmentEnum(STVerticalAlignment.JUSTIFY); - assertEquals((short)4, cellStyle.getVerticalAlignment()); - } - - public void testGetSetWrapText() { - assertFalse(cellStyle.getWrapText()); - cellXf.getAlignment().setWrapText(true); - assertTrue(cellStyle.getWrapText()); - cellStyle.setWrapText(false); - assertFalse(cellXf.getAlignment().getWrapText()); - } + ctFill = CTFill.Factory.newInstance(); + XSSFCellFill fill = new XSSFCellFill(ctFill); + long fillId = stylesTable.putFill(fill); + assertEquals(1, fillId); - public void testGetSetFillBackgroundColor() { - setUp(); - CTPatternFill ctPatternFill = ctFill.addNewPatternFill(); - CTColor ctBgColor = ctPatternFill.addNewBgColor(); - ctBgColor.setIndexed(IndexedColors.BLUE); - assertEquals(IndexedColors.BLUE, cellStyle.getFillBackgroundColor()); - - cellStyle.setFillBackgroundColor((short)IndexedColors.GREEN); - assertEquals(IndexedColors.GREEN,ctFill.getPatternFill().getBgColor().getIndexed()); - } - - public void testGetSetFillForegroundColor() { - setUp(); + ctFont = CTFont.Factory.newInstance(); + XSSFFont font = new XSSFFont(ctFont); + long fontId = stylesTable.putFont(font); + assertEquals(1, fontId); - CTPatternFill ctPatternFill = ctFill.addNewPatternFill(); - CTColor ctFgColor = ctPatternFill.addNewFgColor(); - ctFgColor.setIndexed(5); - assertEquals(5, cellStyle.getFillForegroundColor()); - - ctFgColor.setIndexed(IndexedColors.BLUE); - assertEquals(IndexedColors.BLUE, cellStyle.getFillForegroundColor()); - - cellStyle.setFillForegroundColor((short)IndexedColors.GREEN); - assertEquals(IndexedColors.GREEN,ctFill.getPatternFill().getFgColor().getIndexed()); - } - - /** - * Cloning one XSSFCellStyle onto Another, same XSSFWorkbook - */ - public void testCloneStyleSameWB() throws Exception { - // TODO - } - /** - * Cloning one XSSFCellStyle onto Another, different XSSFWorkbooks - */ - public void testCloneStyleDiffWB() throws Exception { - // TODO - } + cellStyleXf = ctStylesheet.addNewCellStyleXfs().addNewXf(); + cellStyleXf.setBorderId(1); + cellStyleXf.setFillId(1); + cellStyleXf.setFontId(1); + cellXfs = ctStylesheet.addNewCellXfs(); + cellXf = cellXfs.addNewXf(); + cellXf.setXfId(1); + stylesTable.putCellStyleXf(cellStyleXf); + stylesTable.putCellXf(cellXf); + cellStyle = new XSSFCellStyle(1, 1, stylesTable); + } + + public void testGetSetBorderBottom() { + ctBorderA.addNewBottom().setStyle(STBorderStyle.THIN); + assertEquals((short)1, cellStyle.getBorderBottom()); + cellStyle.setBorderBottom((short) 2); + assertEquals(STBorderStyle.THIN, ctBorderA.getBottom().getStyle()); + cellStyle.setBorderBottomEnum(STBorderStyle.THICK); + assertEquals(6, ctBorderA.getBottom().getStyle().intValue()); + } + + public void testGetBorderBottomAsString() { + ctBorderA.addNewBottom().setStyle(STBorderStyle.THIN); + assertEquals("thin", cellStyle.getBorderBottomAsString()); + } + + public void testGetSetBorderRight() { + ctBorderA.addNewRight().setStyle(STBorderStyle.MEDIUM); + assertEquals((short)2, cellStyle.getBorderRight()); + cellStyle.setBorderRight((short) 2); + assertEquals(STBorderStyle.THIN, ctBorderA.getRight().getStyle()); + cellStyle.setBorderRightEnum(STBorderStyle.THICK); + assertEquals(6, ctBorderA.getRight().getStyle().intValue()); + } + + public void testGetBorderRightAsString() { + ctBorderA.addNewRight().setStyle(STBorderStyle.MEDIUM); + assertEquals("medium", cellStyle.getBorderRightAsString()); + } + + public void testGetSetBorderLeft() { + ctBorderA.addNewLeft().setStyle(STBorderStyle.DASHED); + assertEquals((short)3, cellStyle.getBorderLeft()); + cellStyle.setBorderLeft((short) 2); + assertEquals(STBorderStyle.THIN, ctBorderA.getLeft().getStyle()); + cellStyle.setBorderLeftEnum(STBorderStyle.THICK); + assertEquals(6, ctBorderA.getLeft().getStyle().intValue()); + } + + public void testGetBorderLeftAsString() { + ctBorderA.addNewLeft().setStyle(STBorderStyle.DASHED); + assertEquals("dashed", cellStyle.getBorderLeftAsString()); + } + + public void testGetSetBorderTop() { + ctBorderA.addNewTop().setStyle(STBorderStyle.HAIR); + assertEquals((short)7, cellStyle.getBorderTop()); + cellStyle.setBorderTop((short) 2); + assertEquals(STBorderStyle.THIN, ctBorderA.getTop().getStyle()); + cellStyle.setBorderTopEnum(STBorderStyle.THICK); + assertEquals(6, ctBorderA.getTop().getStyle().intValue()); + } + + public void testGetBorderTopAsString() { + ctBorderA.addNewTop().setStyle(STBorderStyle.HAIR); + assertEquals("hair", cellStyle.getBorderTopAsString()); + } + + public void testGetSetBottomBorderColor() { + CTColor ctColor = ctBorderA.addNewBottom().addNewColor(); + ctColor.setIndexed(2); + XSSFColor color = new XSSFColor(ctColor); + assertEquals((short)2, cellStyle.getBottomBorderColor()); + CTColor anotherCtColor = CTColor.Factory.newInstance(); + anotherCtColor.setIndexed(4); + anotherCtColor.setTheme(3); + anotherCtColor.setRgb("1234".getBytes()); + XSSFColor anotherColor = new XSSFColor(anotherCtColor); + cellStyle.setBorderColor(BorderSide.BOTTOM, anotherColor); + assertEquals((short)4, cellStyle.getBottomBorderColor()); + assertEquals(new String("1234".getBytes()), new String(cellStyle.getBorderColor(BorderSide.BOTTOM).getRgb())); + } + + public void testGetSetTopBorderColor() { + CTColor ctColor = ctBorderA.addNewTop().addNewColor(); + ctColor.setIndexed(5); + XSSFColor color = new XSSFColor(ctColor); + assertEquals((short)5, cellStyle.getTopBorderColor()); + CTColor anotherCtColor = CTColor.Factory.newInstance(); + anotherCtColor.setIndexed(7); + anotherCtColor.setTheme(3); + anotherCtColor.setRgb("abcd".getBytes()); + XSSFColor anotherColor = new XSSFColor(anotherCtColor); + cellStyle.setBorderColor(BorderSide.TOP, anotherColor); + assertEquals((short)7, cellStyle.getTopBorderColor()); + assertEquals(new String("abcd".getBytes()), new String(cellStyle.getBorderColor(BorderSide.TOP).getRgb())); + } + + public void testGetSetLeftBorderColor() { + CTColor ctColor = ctBorderA.addNewLeft().addNewColor(); + ctColor.setIndexed(2); + XSSFColor color = new XSSFColor(ctColor); + assertEquals((short)2, cellStyle.getLeftBorderColor()); + CTColor anotherCtColor = CTColor.Factory.newInstance(); + anotherCtColor.setIndexed(4); + anotherCtColor.setTheme(3); + anotherCtColor.setRgb("1234".getBytes()); + XSSFColor anotherColor = new XSSFColor(anotherCtColor); + cellStyle.setBorderColor(BorderSide.LEFT, anotherColor); + assertEquals((short)4, cellStyle.getLeftBorderColor()); + assertEquals(new String("1234".getBytes()), new String(cellStyle.getBorderColor(BorderSide.LEFT).getRgb())); + } + + public void testGetSetRightBorderColor() { + CTColor ctColor = ctBorderA.addNewRight().addNewColor(); + ctColor.setIndexed(8); + XSSFColor color = new XSSFColor(ctColor); + assertEquals((short)8, cellStyle.getRightBorderColor()); + CTColor anotherCtColor = CTColor.Factory.newInstance(); + anotherCtColor.setIndexed(14); + anotherCtColor.setTheme(3); + anotherCtColor.setRgb("af67".getBytes()); + XSSFColor anotherColor = new XSSFColor(anotherCtColor); + cellStyle.setBorderColor(BorderSide.RIGHT, anotherColor); + assertEquals((short)14, cellStyle.getRightBorderColor()); + assertEquals(new String("af67".getBytes()), new String(cellStyle.getBorderColor(BorderSide.RIGHT).getRgb())); + } + + public void testGetFillBackgroundColor() { + CTPatternFill ctPatternFill = ctFill.addNewPatternFill(); + CTColor ctBgColor = ctPatternFill.addNewBgColor(); + ctBgColor.setIndexed(4); + assertEquals(4, cellStyle.getFillBackgroundColor()); + } + + public void testGetFillForegroundColor() { + CTPatternFill ctPatternFill = ctFill.addNewPatternFill(); + CTColor ctFgColor = ctPatternFill.addNewFgColor(); + ctFgColor.setIndexed(5); + assertEquals(5, cellStyle.getFillForegroundColor()); + } + + public void testGetFillPattern() { + CTPatternFill ctPatternFill = ctFill.addNewPatternFill(); + ctPatternFill.setPatternType(STPatternType.DARK_DOWN); + assertEquals(8, cellStyle.getFillPattern()); + } + + public void testGetFont() { + assertNotNull(cellStyle.getFont()); + } + + public void testGetSetHidden() { + assertFalse(cellStyle.getHidden()); + cellXf.getProtection().setHidden(true); + assertTrue(cellStyle.getHidden()); + cellStyle.setHidden(false); + assertFalse(cellStyle.getHidden()); + } + + public void testGetSetLocked() { + assertFalse(cellStyle.getLocked()); + cellXf.getProtection().setLocked(true); + assertTrue(cellStyle.getLocked()); + cellStyle.setLocked(false); + assertFalse(cellStyle.getLocked()); + } + + public void testGetSetIndent() { + assertEquals((short)0, cellStyle.getIndention()); + cellXf.getAlignment().setIndent(3); + assertEquals((short)3, cellStyle.getIndention()); + cellStyle.setIndention((short) 13); + assertEquals((short)13, cellXf.getAlignment().getIndent()); + } + + public void testGetSetAlignement() { + assertNull(cellStyle.getCellAlignment().getCTCellAlignment().getHorizontal()); + assertEquals(HorizontalAlignment.GENERAL, cellStyle.getAlignmentEnum()); + + cellStyle.setAlignment(XSSFCellStyle.ALIGN_LEFT); + assertEquals(XSSFCellStyle.ALIGN_LEFT, cellStyle.getAlignment()); + assertEquals(HorizontalAlignment.LEFT, cellStyle.getAlignmentEnum()); + assertEquals(STHorizontalAlignment.LEFT, cellStyle.getCellAlignment().getCTCellAlignment().getHorizontal()); + + cellStyle.setAlignment(HorizontalAlignment.JUSTIFY); + assertEquals(XSSFCellStyle.ALIGN_JUSTIFY, cellStyle.getAlignment()); + assertEquals(HorizontalAlignment.JUSTIFY, cellStyle.getAlignmentEnum()); + assertEquals(STHorizontalAlignment.JUSTIFY, cellStyle.getCellAlignment().getCTCellAlignment().getHorizontal()); + + cellStyle.setAlignment(HorizontalAlignment.CENTER); + assertEquals(XSSFCellStyle.ALIGN_CENTER, cellStyle.getAlignment()); + assertEquals(HorizontalAlignment.CENTER, cellStyle.getAlignmentEnum()); + assertEquals(STHorizontalAlignment.CENTER, cellStyle.getCellAlignment().getCTCellAlignment().getHorizontal()); + } + + public void testGetSetVerticalAlignment() { + assertEquals(VerticalAlignment.BOTTOM, cellStyle.getVerticalAlignmentEnum()); + assertEquals(XSSFCellStyle.VERTICAL_BOTTOM, cellStyle.getVerticalAlignment()); + assertNull(cellStyle.getCellAlignment().getCTCellAlignment().getVertical()); + + cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER); + assertEquals(XSSFCellStyle.VERTICAL_CENTER, cellStyle.getVerticalAlignment()); + assertEquals(VerticalAlignment.CENTER, cellStyle.getVerticalAlignmentEnum()); + assertEquals(STVerticalAlignment.CENTER, cellStyle.getCellAlignment().getCTCellAlignment().getVertical()); + + cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_JUSTIFY); + assertEquals(XSSFCellStyle.VERTICAL_JUSTIFY, cellStyle.getVerticalAlignment()); + assertEquals(VerticalAlignment.JUSTIFY, cellStyle.getVerticalAlignmentEnum()); + assertEquals(STVerticalAlignment.JUSTIFY, cellStyle.getCellAlignment().getCTCellAlignment().getVertical()); + } + + public void testGetSetWrapText() { + assertFalse(cellStyle.getWrapText()); + cellXf.getAlignment().setWrapText(true); + assertTrue(cellStyle.getWrapText()); + cellStyle.setWrapText(false); + assertFalse(cellXf.getAlignment().getWrapText()); + } + + /** + * Cloning one XSSFCellStyle onto Another, same XSSFWorkbook + */ + public void testCloneStyleSameWB() throws Exception { + // TODO + } + /** + * Cloning one XSSFCellStyle onto Another, different XSSFWorkbooks + */ + public void testCloneStyleDiffWB() throws Exception { + // TODO + } }