You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by pa...@apache.org on 2008/04/06 15:05:15 UTC
svn commit: r645234 - in /poi/branches/ooxml/src/ooxml:
java/org/apache/poi/xssf/model/ java/org/apache/poi/xssf/usermodel/
java/org/apache/poi/xssf/usermodel/extensions/
testcases/org/apache/poi/xssf/usermodel/
Author: paolo
Date: Sun Apr 6 06:05:13 2008
New Revision: 645234
URL: http://svn.apache.org/viewvc?rev=645234&view=rev
Log:
Completed StylesTable initialization in order to create a new 'POIzed' file readable by Excel
Modified:
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellBorder.java
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellFill.java
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFColor.java
poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java
Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java?rev=645234&r1=645233&r2=645234&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java Sun Apr 6 06:05:13 2008
@@ -35,15 +35,19 @@
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlOptions;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBorder;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBorders;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCellStyleXfs;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCellXfs;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFill;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFills;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFont;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFonts;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTNumFmt;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTNumFmts;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTStylesheet;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.STFontScheme;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.STPatternType;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.StyleSheetDocument;
@@ -84,16 +88,8 @@
public StylesTable() {
doc = StyleSheetDocument.Factory.newInstance();
doc.addNewStyleSheet();
-
- // Add a single, default cell xf and cell style xf
- // Excel seems to require these
- CTXf[] ctxfs = new CTXf[2];
- for (int i = 0; i < ctxfs.length; i++) {
- ctxfs[i] = CTXf.Factory.newInstance();
- ctxfs[i].setNumFmtId(0);
- }
- xfs.add(ctxfs[0]);
- styleXfs.add(ctxfs[1]);
+ // Initialization required in order to make the document readable by MSExcel
+ initialize();
}
/**
@@ -279,18 +275,24 @@
doc.getStyleSheet().setNumFmts(formats);
// Fonts
- CTFonts fnts = CTFonts.Factory.newInstance();
- fnts.setCount(fonts.size());
- fnts.setFontArray(
+ CTFonts ctFonts = CTFonts.Factory.newInstance();
+ ctFonts.setCount(fonts.size());
+ ctFonts.setFontArray(
fonts.toArray(new CTFont[fonts.size()])
);
- doc.getStyleSheet().setFonts(fnts);
+ doc.getStyleSheet().setFonts(ctFonts);
// Fills
- // TODO
+ CTFills ctFills = CTFills.Factory.newInstance();
+ ctFills.setCount(fills.size());
+ ctFills.setFillArray(fills.toArray(new CTFill[fills.size()]));
+ doc.getStyleSheet().setFills(ctFills);
// Borders
- // TODO
+ CTBorders ctBorders = CTBorders.Factory.newInstance();
+ ctBorders.setCount(borders.size());
+ ctBorders.setBorderArray(borders.toArray(new CTBorder[borders.size()]));
+ doc.getStyleSheet().setBorders(ctBorders);
// Xfs
if(xfs.size() > 0) {
@@ -326,5 +328,52 @@
private long putFont(XSSFFont font, LinkedList<CTFont> fonts) {
return font.putFont(fonts);
+ }
+ private void initialize() {
+ CTFont ctFont = createDefaultFont();
+ fonts.add(ctFont);
+
+ CTFill ctFill = createDefaultFill();
+ fills.add(ctFill);
+
+ CTBorder ctBorder = createDefaultBorder();
+ borders.add(ctBorder);
+
+ CTXf styleXf = createDefaultXf();
+ styleXfs.add(styleXf);
+ CTXf xf = createDefaultXf();
+ xf.setXfId(0);
+ xfs.add(xf);
+ }
+ private CTXf createDefaultXf() {
+ CTXf ctXf = CTXf.Factory.newInstance();
+ ctXf.setNumFmtId(0);
+ ctXf.setFontId(0);
+ ctXf.setFillId(0);
+ ctXf.setBorderId(0);
+ return ctXf;
+ }
+ private CTBorder createDefaultBorder() {
+ CTBorder ctBorder = CTBorder.Factory.newInstance();
+ ctBorder.addNewBottom();
+ ctBorder.addNewTop();
+ ctBorder.addNewLeft();
+ ctBorder.addNewRight();
+ ctBorder.addNewDiagonal();
+ return ctBorder;
+ }
+ private CTFill createDefaultFill() {
+ CTFill ctFill = CTFill.Factory.newInstance();
+ ctFill.addNewPatternFill().setPatternType(STPatternType.NONE);
+ return ctFill;
+ }
+ private CTFont createDefaultFont() {
+ CTFont ctFont = CTFont.Factory.newInstance();
+ ctFont.addNewSz().setVal(11);
+ ctFont.addNewColor().setTheme(1);
+ ctFont.addNewName().setVal("Calibri");
+ ctFont.addNewFamily().setVal(2);
+ ctFont.addNewScheme().setVal(STFontScheme.MINOR);
+ return ctFont;
}
}
Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java?rev=645234&r1=645233&r2=645234&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java Sun Apr 6 06:05:13 2008
@@ -33,7 +33,6 @@
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 {
@@ -313,6 +312,14 @@
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
@@ -372,10 +379,6 @@
private short getBorderColorIndexed(BorderSide side) {
return (short) getBorderColor(side).getIndexed();
- }
-
- private XSSFColor getBorderColor(BorderSide side) {
- return getCellBorder().getBorderColor(side);
}
private void setBorderColorIndexed(BorderSide side, long color) {
Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellBorder.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellBorder.java?rev=645234&r1=645233&r2=645234&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellBorder.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellBorder.java Sun Apr 6 06:05:13 2008
@@ -22,7 +22,6 @@
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBorder;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBorderPr;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STBorderStyle;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.STBorderStyle.Enum;
public class XSSFCellBorder {
@@ -68,6 +67,10 @@
borderPr.addNewColor();
}
return new XSSFColor(getBorder(side).getColor());
+ }
+
+ public void setBorderColor(BorderSide side, XSSFColor color) {
+ color.setToBorder(getBorder(side));
}
private CTBorderPr getBorder(BorderSide side) {
Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellFill.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellFill.java?rev=645234&r1=645233&r2=645234&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellFill.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellFill.java Sun Apr 6 06:05:13 2008
@@ -1,3 +1,19 @@
+/* ====================================================================
+ 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.extensions;
import java.util.LinkedList;
Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFColor.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFColor.java?rev=645234&r1=645233&r2=645234&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFColor.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFColor.java Sun Apr 6 06:05:13 2008
@@ -16,6 +16,7 @@
==================================================================== */
package org.apache.poi.xssf.usermodel.extensions;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBorderPr;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor;
public class XSSFColor {
@@ -64,5 +65,9 @@
public void setTint(double tint) {
color.setTint(tint);
+ }
+
+ public void setToBorder(CTBorderPr border) {
+ border.setColor(this.color);
}
}
Modified: poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java?rev=645234&r1=645233&r2=645234&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java (original)
+++ poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java Sun Apr 6 06:05:13 2008
@@ -22,6 +22,8 @@
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.openxmlformats.schemas.spreadsheetml.x2006.main.CTBorder;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCellXfs;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor;
@@ -134,6 +136,66 @@
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() {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org