XSSFCellStyle alignment methods and others + tests

git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@645129 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Paolo Mottadelli 2008-04-05 16:19:56 +00:00
parent e8c9f208cc
commit cdc57ab1b8
4 changed files with 133 additions and 35 deletions

View File

@ -22,11 +22,17 @@ import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.StylesSource; import org.apache.poi.ss.usermodel.StylesSource;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.model.StylesTable; import org.apache.poi.xssf.model.StylesTable;
import org.apache.poi.xssf.usermodel.extensions.XSSFCellAlignment;
import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder; import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder;
import org.apache.poi.xssf.usermodel.extensions.XSSFCellFill; import org.apache.poi.xssf.usermodel.extensions.XSSFCellFill;
import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder.BorderSides; import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder.BorderSides;
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.CTXf;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STBorderStyle.Enum; import org.openxmlformats.schemas.spreadsheetml.x2006.main.STBorderStyle;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STHorizontalAlignment;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignment;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignment.Enum;
public class XSSFCellStyle implements CellStyle { public class XSSFCellStyle implements CellStyle {
@ -36,6 +42,7 @@ public class XSSFCellStyle implements CellStyle {
private XSSFCellBorder cellBorder; private XSSFCellBorder cellBorder;
private XSSFCellFill cellFill; private XSSFCellFill cellFill;
private XSSFFont font; private XSSFFont font;
private XSSFCellAlignment cellAlignment;
/** /**
* Creates a Cell Style from the supplied parts * Creates a Cell Style from the supplied parts
@ -75,8 +82,11 @@ public class XSSFCellStyle implements CellStyle {
} }
public short getAlignment() { public short getAlignment() {
// TODO Auto-generated method stub return (short)getAlignmentEnum().intValue();
return 0; }
public STHorizontalAlignment.Enum getAlignmentEnum() {
return getCellAlignment().getHorizontal();
} }
public short getBorderBottom() { public short getBorderBottom() {
@ -135,8 +145,7 @@ public class XSSFCellStyle implements CellStyle {
} }
public Font getFont(Workbook parentWorkbook) { public Font getFont(Workbook parentWorkbook) {
// TODO Auto-generated method stub return getFont();
return null;
} }
public Font getFont() { public Font getFont() {
@ -147,18 +156,15 @@ public class XSSFCellStyle implements CellStyle {
} }
public short getFontIndex() { public short getFontIndex() {
// TODO Auto-generated method stub return (short) getFontId();
return 0;
} }
public boolean getHidden() { public boolean getHidden() {
// TODO Auto-generated method stub return getCellProtection().getHidden();
return false;
} }
public short getIndention() { public short getIndention() {
// TODO Auto-generated method stub return (short) getCellAlignment().getIndent();
return 0;
} }
public short getIndex() { public short getIndex() {
@ -171,8 +177,7 @@ public class XSSFCellStyle implements CellStyle {
} }
public boolean getLocked() { public boolean getLocked() {
// TODO Auto-generated method stub return getCellProtection().getLocked();
return false;
} }
public short getRightBorderColor() { public short getRightBorderColor() {
@ -180,8 +185,7 @@ public class XSSFCellStyle implements CellStyle {
} }
public short getRotation() { public short getRotation() {
// TODO Auto-generated method stub return (short) getCellAlignment().getTextRotation();
return 0;
} }
public short getTopBorderColor() { public short getTopBorderColor() {
@ -189,18 +193,23 @@ public class XSSFCellStyle implements CellStyle {
} }
public short getVerticalAlignment() { public short getVerticalAlignment() {
// TODO Auto-generated method stub return (short) getVerticalAlignmentEnum().intValue();
return 0; }
public STVerticalAlignment.Enum getVerticalAlignmentEnum() {
return getCellAlignment().getVertical();
} }
public boolean getWrapText() { public boolean getWrapText() {
// TODO Auto-generated method stub return getCellAlignment().getWrapText();
return false;
} }
public void setAlignment(short align) { public void setAlignment(short align) {
// TODO Auto-generated method stub getCellAlignment().setHorizontal(STHorizontalAlignment.Enum.forInt(align));
}
public void setAlignementEnum(STHorizontalAlignment.Enum align) {
getCellAlignment().setHorizontal(align);
} }
public void setBorderBottom(short border) { public void setBorderBottom(short border) {
@ -253,13 +262,11 @@ public class XSSFCellStyle implements CellStyle {
} }
public void setHidden(boolean hidden) { public void setHidden(boolean hidden) {
// TODO Auto-generated method stub getCellProtection().setHidden(hidden);
} }
public void setIndention(short indent) { public void setIndention(short indent) {
// TODO Auto-generated method stub getCellAlignment().setIndent(indent);
} }
public void setLeftBorderColor(short color) { public void setLeftBorderColor(short color) {
@ -268,8 +275,7 @@ public class XSSFCellStyle implements CellStyle {
} }
public void setLocked(boolean locked) { public void setLocked(boolean locked) {
// TODO Auto-generated method stub getCellProtection().setLocked(locked);
} }
public void setRightBorderColor(short color) { public void setRightBorderColor(short color) {
@ -288,8 +294,11 @@ public class XSSFCellStyle implements CellStyle {
} }
public void setVerticalAlignment(short align) { public void setVerticalAlignment(short align) {
// TODO Auto-generated method stub setVerticalAlignmentEnum(STVerticalAlignment.Enum.forInt(align));
}
public void setVerticalAlignmentEnum(STVerticalAlignment.Enum align) {
getCellAlignment().setVertical(align);
} }
public void setWrapText(boolean wrapped) { public void setWrapText(boolean wrapped) {
@ -326,7 +335,7 @@ public class XSSFCellStyle implements CellStyle {
return (int) cellStyleXf.getFillId(); return (int) cellStyleXf.getFillId();
} }
private Enum getBorderStyle(BorderSides side) { private STBorderStyle.Enum getBorderStyle(BorderSides side) {
return getCellBorder().getBorderStyle(side); return getCellBorder().getBorderStyle(side);
} }
@ -341,4 +350,25 @@ public class XSSFCellStyle implements CellStyle {
return (int) cellStyleXf.getFontId(); return (int) cellStyleXf.getFontId();
} }
private CTCellProtection getCellProtection() {
if (cellXf.getProtection() == null) {
CTCellProtection protection = cellXf.addNewProtection();
}
return cellXf.getProtection();
}
private 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();
}
} }

View File

@ -18,7 +18,7 @@ package org.apache.poi.xssf.usermodel.extensions;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCellAlignment; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCellAlignment;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STHorizontalAlignment; import org.openxmlformats.schemas.spreadsheetml.x2006.main.STHorizontalAlignment;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STHorizontalAlignment.Enum; import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignment;
public class XSSFCellAlignment { public class XSSFCellAlignment {
@ -29,7 +29,21 @@ public class XSSFCellAlignment {
this.cellAlignement = cellAlignment; this.cellAlignement = cellAlignment;
} }
public Enum getHorizontal() { 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(); return cellAlignement.getHorizontal();
} }
@ -44,4 +58,12 @@ public class XSSFCellAlignment {
public void setIndent(long indent) { public void setIndent(long indent) {
cellAlignement.setIndent(indent); cellAlignement.setIndent(indent);
} }
public long getTextRotation() {
return cellAlignement.getTextRotation();
}
public boolean getWrapText() {
return cellAlignement.getWrapText();
}
} }

View File

@ -53,7 +53,7 @@ public class XSSFCellBorder {
return borders.size() - 1; return borders.size() - 1;
} }
public Enum getBorderStyle(BorderSides side) { public org.openxmlformats.schemas.spreadsheetml.x2006.main.STBorderStyle.Enum getBorderStyle(BorderSides side) {
return getBorder(side).getStyle(); return getBorder(side).getStyle();
} }

View File

@ -23,6 +23,7 @@ import org.apache.poi.xssf.model.StylesTable;
import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder; import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder;
import org.apache.poi.xssf.usermodel.extensions.XSSFCellFill; import org.apache.poi.xssf.usermodel.extensions.XSSFCellFill;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBorder; 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.CTColor;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFill; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFill;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFont; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFont;
@ -30,7 +31,9 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPatternFill;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTStylesheet; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTStylesheet;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STBorderStyle; 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.STPatternType;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignment;
public class TestXSSFCellStyle extends TestCase { public class TestXSSFCellStyle extends TestCase {
@ -41,12 +44,14 @@ public class TestXSSFCellStyle extends TestCase {
private CTFont ctFont; private CTFont ctFont;
private CTXf cellStyleXf; private CTXf cellStyleXf;
private CTXf cellXf; private CTXf cellXf;
private CTCellXfs cellXfs;
private XSSFCellStyle cellStyle; private XSSFCellStyle cellStyle;
private CTStylesheet ctStylesheet;
public void setUp() { public void setUp() {
stylesTable = new StylesTable(); stylesTable = new StylesTable();
CTStylesheet ctStylesheet = stylesTable._getRawStylesheet(); ctStylesheet = stylesTable._getRawStylesheet();
// Until we do XSSFBorder properly, cheat // Until we do XSSFBorder properly, cheat
ctBorderA = CTBorder.Factory.newInstance(); ctBorderA = CTBorder.Factory.newInstance();
@ -69,7 +74,8 @@ public class TestXSSFCellStyle extends TestCase {
cellStyleXf = ctStylesheet.addNewCellStyleXfs().addNewXf(); cellStyleXf = ctStylesheet.addNewCellStyleXfs().addNewXf();
cellStyleXf.setBorderId(0); cellStyleXf.setBorderId(0);
cellXf = ctStylesheet.addNewCellXfs().addNewXf(); cellXfs = ctStylesheet.addNewCellXfs();
cellXf = cellXfs.addNewXf();
cellXf.setXfId(0); cellXf.setXfId(0);
cellStyle = new XSSFCellStyle(cellXf, cellStyleXf, stylesTable); cellStyle = new XSSFCellStyle(cellXf, cellStyleXf, stylesTable);
} }
@ -137,4 +143,44 @@ public class TestXSSFCellStyle extends TestCase {
public void testGetFont() { public void testGetFont() {
assertNotNull(cellStyle.getFont()); 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() {
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());
}
} }