You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ye...@apache.org on 2008/09/18 09:42:41 UTC
svn commit: r696584 [1/2] - in /poi/branches/ooxml: ./
src/examples/src/org/apache/poi/xssf/usermodel/examples/
src/ooxml/interfaces-jdk14/org/apache/poi/ss/usermodel/
src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/
src/ooxml/java/org/apache/po...
Author: yegor
Date: Thu Sep 18 00:42:40 2008
New Revision: 696584
URL: http://svn.apache.org/viewvc?rev=696584&view=rev
Log:
1. initial support for rich text in xssf"
2. cleaned common ooxml-ole2 interfaces, removed ole2-specific stuff
3. added new examples from the quick guide
4. misc xssf refactoring, tending to use enums intstead of final static constants
5. refactored XSSFFont
6. included test-ooxml and jar-ooxml in the dist target, they are part of release and should be there
Added:
poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateCell.java (with props)
poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateUserDefinedDataFormats.java (with props)
poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithRichText.java (with props)
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/dev/XSSFSave.java (with props)
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/IndexedColors.java
- copied, changed from r695757, poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/util/IndexedColors.java
poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java (with props)
Removed:
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/util/IndexedColors.java
Modified:
poi/branches/ooxml/build.xml
poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateNewSpreadsheet.java
poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithBorders.java
poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithFonts.java
poi/branches/ooxml/src/ooxml/interfaces-jdk14/org/apache/poi/ss/usermodel/Comment.java
poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Cell.java
poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Color.java
poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Font.java
poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/RichTextString.java
poi/branches/ooxml/src/ooxml/java/org/apache/poi/POIXMLDocument.java
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/model/SharedStringsTable.java
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.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/XSSFFont.java
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.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/XSSFColor.java
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/util/CTFontWrapper.java
poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java
poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java
poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java
poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRow.java
poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
Modified: poi/branches/ooxml/build.xml
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/build.xml?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/build.xml (original)
+++ poi/branches/ooxml/build.xml Thu Sep 18 00:42:40 2008
@@ -555,8 +555,8 @@
<delete file="${version.java}" />
</target>
- <target name="test" depends="test-main,test-scratchpad,test-contrib"
- description="Tests main, contrib and scratchpad"/>
+ <target name="test" depends="test-main,test-scratchpad,test-contrib,test-ooxml"
+ description="Tests main, contrib, scratchpad and ooxml"/>
<target name="-test-main-check">
<uptodate property="main.test.notRequired" targetfile="${main.testokfile}">
@@ -1206,7 +1206,7 @@
</manifest>
</jar>
</target>
- <target name="jar" depends="compile, compile-version, jar-14" description="Creates jar files for distribution">
+ <target name="jar" depends="compile, compile-version, jar-14, jar-ooxml" description="Creates jar files for distribution">
<jar destfile="${dist.dir}/${jar.name}-${version.id}-${DSTAMP}.jar">
<fileset dir="${main.output.dir}" />
<fileset dir="legal/" />
Added: poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateCell.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateCell.java?rev=696584&view=auto
==============================================================================
--- poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateCell.java (added)
+++ poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateCell.java Thu Sep 18 00:42:40 2008
@@ -0,0 +1,76 @@
+/* ====================================================================
+ 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.examples;
+
+import java.io.FileOutputStream;
+import java.util.Date;
+
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.usermodel.XSSFRichTextString;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+/**
+ *
+ */
+public class CreateCell {
+
+
+ public static void main(String[]args) throws Exception {
+ Workbook wb = new XSSFWorkbook();
+ CreationHelper creationHelper = wb.getCreationHelper();
+ Sheet sheet = wb.createSheet("new sheet");
+
+ // Create a row and put some cells in it. Rows are 0 based.
+ Row row = sheet.createRow((short)0);
+ // Create a cell and put a value in it.
+ Cell cell = row.createCell((short)0);
+ cell.setCellValue(1);
+
+ //numeric value
+ row.createCell(1).setCellValue(1.2);
+
+ //plain string value
+ row.createCell(2).setCellValue("This is a string cell");
+
+ //rich text string
+ RichTextString str = creationHelper.createRichTextString("Apache");
+ Font font = wb.createFont();
+ font.setItalic(true);
+ font.setUnderline(Font.U_SINGLE);
+ str.applyFont(font);
+ row.createCell(3).setCellValue(str);
+
+ //boolean value
+ row.createCell(4).setCellValue(true);
+
+ //formula
+ row.createCell(5).setCellFormula("SUM(A1:B1)");
+
+ //date
+ CellStyle style = wb.createCellStyle();
+ style.setDataFormat(creationHelper.createDataFormat().getFormat("m/d/yy h:mm"));
+ cell = row.createCell(6);
+ cell.setCellValue(new Date());
+ cell.setCellStyle(style);
+
+ // Write the output to a file
+ FileOutputStream fileOut = new FileOutputStream("ooxml-cell.xlsx");
+ wb.write(fileOut);
+ fileOut.close();
+ }
+}
Propchange: poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateCell.java
------------------------------------------------------------------------------
svn:executable = *
Modified: poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateNewSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateNewSpreadsheet.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateNewSpreadsheet.java (original)
+++ poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateNewSpreadsheet.java Thu Sep 18 00:42:40 2008
@@ -46,7 +46,7 @@
s2.getRow(2).createCell(1).setCellValue(createHelper.createRichTextString("Sheet 2"));
-
+/*
// Comment
Comment comment = ((XSSFSheet)s1).createComment();
// HSSFPatriarch patriach = (HSSFPatriarch)s1.createDrawingPatriarch();
@@ -62,7 +62,7 @@
hyperlink.setLabel("Link to POI");
s1.getRow(1).createCell(1).setHyperlink(hyperlink);
s1.getRow(1).getCell(1).setCellValue(createHelper.createRichTextString("Link to POI"));
-
+*/
// Save
FileOutputStream fout = new FileOutputStream("NewFile.xlsx");
wb.write(fout);
Added: poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateUserDefinedDataFormats.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateUserDefinedDataFormats.java?rev=696584&view=auto
==============================================================================
--- poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateUserDefinedDataFormats.java (added)
+++ poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateUserDefinedDataFormats.java Thu Sep 18 00:42:40 2008
@@ -0,0 +1,65 @@
+/* ====================================================================
+ 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.examples;
+
+import java.io.FileOutputStream;
+
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.DataFormat;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+/**
+ * How to set user-defined date formats
+ */
+public class CreateUserDefinedDataFormats {
+
+
+ public static void main(String[]args) throws Exception {
+ Workbook wb = new XSSFWorkbook();
+ Sheet sheet = wb.createSheet("format sheet");
+ CellStyle style;
+ DataFormat format = wb.createDataFormat();
+ Row row;
+ Cell cell;
+ short rowNum = 0;
+ short colNum = 0;
+
+ row = sheet.createRow(rowNum++);
+ cell = row.createCell(colNum);
+ cell.setCellValue(11111.25);
+ style = wb.createCellStyle();
+ style.setDataFormat(format.getFormat("0.0"));
+ cell.setCellStyle(style);
+
+ row = sheet.createRow(rowNum++);
+ cell = row.createCell(colNum);
+ cell.setCellValue(11111.25);
+ style = wb.createCellStyle();
+ style.setDataFormat(format.getFormat("#,##0.0000"));
+ cell.setCellStyle(style);
+
+ FileOutputStream fileOut = new FileOutputStream("ooxml_dataFormat.xlsx");
+ wb.write(fileOut);
+ fileOut.close();
+ }
+
+}
Propchange: poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateUserDefinedDataFormats.java
------------------------------------------------------------------------------
svn:executable = *
Modified: poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithBorders.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithBorders.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithBorders.java (original)
+++ poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithBorders.java Thu Sep 18 00:42:40 2008
@@ -17,7 +17,7 @@
package org.apache.poi.xssf.usermodel.examples;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.apache.poi.xssf.util.IndexedColors;
+import org.apache.poi.xssf.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.*;
import java.io.FileOutputStream;
@@ -40,13 +40,13 @@
// Style the cell with borders all around.
CellStyle style = wb.createCellStyle();
style.setBorderBottom(CellStyle.BORDER_THIN);
- style.setBottomBorderColor((short)IndexedColors.BLACK);
+ style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
style.setBorderLeft(CellStyle.BORDER_THIN);
- style.setLeftBorderColor((short)IndexedColors.GREEN);
+ style.setLeftBorderColor(IndexedColors.GREEN.getIndex());
style.setBorderRight(CellStyle.BORDER_THIN);
- style.setRightBorderColor((short)IndexedColors.BLUE);
+ style.setRightBorderColor(IndexedColors.BLUE.getIndex());
style.setBorderTop(CellStyle.BORDER_MEDIUM_DASHED);
- style.setTopBorderColor((short)IndexedColors.BLACK);
+ style.setTopBorderColor(IndexedColors.BLACK.getIndex());
cell.setCellStyle(style);
// Write the output to a file
Modified: poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithFonts.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithFonts.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithFonts.java (original)
+++ poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithFonts.java Thu Sep 18 00:42:40 2008
@@ -21,8 +21,8 @@
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
+import org.apache.poi.xssf.usermodel.IndexedColors;
import org.apache.poi.xssf.usermodel.extensions.XSSFColor;
-import org.apache.poi.xssf.util.IndexedColors;
import java.io.FileOutputStream;
@@ -42,7 +42,7 @@
font.setFontHeightInPoints((short)24);
font.setFontName("Courier New");
- font.setColor((short)IndexedColors.RED);
+ font.setColor(IndexedColors.RED.getIndex());
font.setItalic(true);
font.setStrikeout(true);
Added: poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithRichText.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithRichText.java?rev=696584&view=auto
==============================================================================
--- poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithRichText.java (added)
+++ poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithRichText.java Thu Sep 18 00:42:40 2008
@@ -0,0 +1,62 @@
+/* ====================================================================
+ 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.examples;
+
+import org.apache.poi.xssf.usermodel.*;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.hssf.util.HSSFColor;
+import org.apache.xmlbeans.XmlOptions;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
+
+import java.io.FileOutputStream;
+import java.io.Writer;
+import java.io.StringWriter;
+
+/**
+ * Demonstrates how to work with rich text
+ */
+public class WorkingWithRichText {
+
+ public static void main(String[] args)
+ throws Exception
+ {
+ XSSFWorkbook wb = new XSSFWorkbook();
+
+ XSSFSheet sheet = wb.createSheet();
+ XSSFRow row = sheet.createRow((short) 2);
+
+ XSSFCell cell = row.createCell(1);
+ XSSFRichTextString rt = new XSSFRichTextString("The quick");
+
+ XSSFFont font1 = wb.createFont();
+ font1.setBold(true);
+ rt.append(" brown fox", font1);
+
+ XSSFFont font2 = wb.createFont();
+ font2.setItalic(true);
+ font2.setColor(IndexedColors.RED.getIndex());
+ rt.applyFont((short)0);
+ cell.setCellValue(rt);
+
+ // Write the output to a file
+ FileOutputStream fileOut = new FileOutputStream("rich_text.xlsx");
+ wb.write(fileOut);
+ fileOut.close();
+
+ }
+
+ }
Propchange: poi/branches/ooxml/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithRichText.java
------------------------------------------------------------------------------
svn:executable = *
Modified: poi/branches/ooxml/src/ooxml/interfaces-jdk14/org/apache/poi/ss/usermodel/Comment.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/interfaces-jdk14/org/apache/poi/ss/usermodel/Comment.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/interfaces-jdk14/org/apache/poi/ss/usermodel/Comment.java (original)
+++ poi/branches/ooxml/src/ooxml/interfaces-jdk14/org/apache/poi/ss/usermodel/Comment.java Thu Sep 18 00:42:40 2008
@@ -18,6 +18,6 @@
package org.apache.poi.ss.usermodel;
public interface Comment {
- public void setRow(short row);
+ public void setRow(int row);
public void setColumn(short row);
}
Modified: poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Cell.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Cell.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Cell.java (original)
+++ poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Cell.java Thu Sep 18 00:42:40 2008
@@ -173,6 +173,8 @@
void setCellValue(RichTextString value);
+ void setCellValue(String value);
+
void setCellFormula(String formula);
String getCellFormula();
Modified: poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Color.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Color.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Color.java (original)
+++ poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Color.java Thu Sep 18 00:42:40 2008
@@ -19,22 +19,5 @@
public interface Color {
- /**
- * @return index to the standard palette
- */
-
- short getIndex();
-
- /**
- * @return triplet representation like that in Excel
- */
-
- short[] getTriplet();
-
- /**
- * @return a hex string exactly like a gnumeric triplet
- */
-
- String getHexString();
}
\ No newline at end of file
Modified: poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Font.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Font.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Font.java (original)
+++ poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Font.java Thu Sep 18 00:42:40 2008
@@ -130,14 +130,6 @@
String getFontName();
/**
- * get the index within the HSSFWorkbook (sequence within the collection of Font objects)
- * @return unique index number of the underlying record this Font represents (probably you don't care
- * unless you're comparing which one is which)
- */
-
- short getIndex();
-
- /**
* set the font height in unit's of 1/20th of a point. Maybe you might want to
* use the setFontHeightInPoints which matches to the familiar 10, 12, 14 etc..
* @param height height in 1/20ths of a point
@@ -218,24 +210,6 @@
short getColor();
/**
- * set the boldness to use
- * @param boldweight
- * @see #BOLDWEIGHT_NORMAL
- * @see #BOLDWEIGHT_BOLD
- */
-
- void setBoldweight(short boldweight);
-
- /**
- * get the boldness to use
- * @return boldweight
- * @see #BOLDWEIGHT_NORMAL
- * @see #BOLDWEIGHT_BOLD
- */
-
- short getBoldweight();
-
- /**
* set normal,super or subscript.
* @param offset type to use (none,super,sub)
* @see #SS_NONE
Modified: poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/RichTextString.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/RichTextString.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/RichTextString.java (original)
+++ poi/branches/ooxml/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/RichTextString.java Thu Sep 18 00:42:40 2008
@@ -25,8 +25,6 @@
* @author Jason Height (jheight at apache.org)
*/
public interface RichTextString {
- /** Place holder for indicating that NO_FONT has been applied here */
- public static final short NO_FONT = 0;
/**
* Applies a font to the specified characters of a string.
@@ -68,20 +66,8 @@
int length();
/**
- * Returns the font in use at a particular index.
+ * @return The number of formatting runs used.
*
- * @param index The index.
- * @return The font that's currently being applied at that
- * index or null if no font is being applied or the
- * index is out of range.
- */
- short getFontAtIndex(int index);
-
- /**
- * @return The number of formatting runs used. There will always be at
- * least one of font NO_FONT.
- *
- * @see #NO_FONT
*/
int numFormattingRuns();
@@ -93,14 +79,6 @@
int getIndexOfFormattingRun(int index);
/**
- * Gets the font used in a particular formatting run.
- *
- * @param index the index of the formatting run
- * @return the font number used.
- */
- short getFontOfFormattingRun(int index);
-
- /**
* Applies the specified font to the entire string.
*
* @param fontIndex the font to apply.
Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/POIXMLDocument.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/POIXMLDocument.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/POIXMLDocument.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/POIXMLDocument.java Thu Sep 18 00:42:40 2008
@@ -100,7 +100,14 @@
throw new IOException(e.toString());
}
}
-
+ public static Package openPackage(InputStream is) throws IOException {
+ try {
+ return Package.open(is);
+ } catch (InvalidFormatException e) {
+ throw new IOException(e.toString());
+ }
+ }
+
protected Package getPackage() {
return this.pkg;
}
Added: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/dev/XSSFSave.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/dev/XSSFSave.java?rev=696584&view=auto
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/dev/XSSFSave.java (added)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/dev/XSSFSave.java Thu Sep 18 00:42:40 2008
@@ -0,0 +1,42 @@
+/* ====================================================================
+ 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.dev;
+
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+import java.io.FileOutputStream;
+
+/**
+ * Utility which loads a SpreadsheetML file and saves it back.
+ * This is a handy tool to investigate read-write round trip safety.
+ *
+ * @author Yegor Kozlov
+ */
+public class XSSFSave {
+ public static void main(String[] args) throws Exception {
+ for (int i = 0; i < args.length; i++) {
+ XSSFWorkbook wb = new XSSFWorkbook(args[i]);
+
+ int sep = args[i].lastIndexOf('.');
+ String outfile = args[i].substring(0, sep) + "-save.xlsx";
+ FileOutputStream out = new FileOutputStream(outfile);
+ wb.write(out);
+ out.close();
+ }
+ }
+
+}
Propchange: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/dev/XSSFSave.java
------------------------------------------------------------------------------
svn:executable = *
Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/model/SharedStringsTable.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/model/SharedStringsTable.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/model/SharedStringsTable.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/model/SharedStringsTable.java Thu Sep 18 00:42:40 2008
@@ -195,7 +195,7 @@
options.setUseDefaultNamespace();
//re-create the sst table every time saving a workbook
- SstDocument doc = SstDocument.Factory.newInstance(options);
+ SstDocument doc = SstDocument.Factory.newInstance();
CTSst sst = doc.addNewSst();
sst.setCount(count);
sst.setUniqueCount(uniqueCount);
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=696584&r1=696583&r2=696584&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 Thu Sep 18 00:42:40 2008
@@ -20,6 +20,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.LinkedList;
@@ -59,7 +60,7 @@
*/
public class StylesTable implements StylesSource, XSSFModel {
private final Hashtable<Long,String> numberFormats = new Hashtable<Long,String>();
- private final LinkedList<CTFont> fonts = new LinkedList<CTFont>();
+ private final ArrayList<CTFont> fonts = new ArrayList<CTFont>();
private final LinkedList<CTFill> fills = new LinkedList<CTFill>();
private final LinkedList<CTBorder> borders = new LinkedList<CTBorder>();
private final LinkedList<CTXf> styleXfs = new LinkedList<CTXf>();
@@ -230,7 +231,12 @@
public int getNumCellStyles(){
return styleXfs.size();
}
-
+ /**
+ * get the size of fonts
+ */
+ public int getNumberOfFonts(){
+ return this.fonts.size();
+ }
/**
* For unit testing only
*/
@@ -367,7 +373,7 @@
return fill.putFill(fills);
}
- private long putFont(XSSFFont font, LinkedList<CTFont> fonts) {
+ private long putFont(XSSFFont font, ArrayList<CTFont> fonts) {
return font.putFont(fonts);
}
private void initialize() {
@@ -423,8 +429,8 @@
XSSFFont font=new XSSFFont(ctFont);
return font;
*/
-
- XSSFFont xssfFont=new XSSFFont();
+ CTFont ctFont = CTFont.Factory.newInstance();
+ XSSFFont xssfFont=new XSSFFont(ctFont);
xssfFont.setFontHeightInPoints(XSSFFont.DEFAULT_FONT_SIZE);
xssfFont.setColor(XSSFFont.DEFAULT_FONT_COLOR);//setTheme
xssfFont.setFontName(XSSFFont.DEFAULT_FONT_NAME);
Copied: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/IndexedColors.java (from r695757, poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/util/IndexedColors.java)
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/IndexedColors.java?p2=poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/IndexedColors.java&p1=poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/util/IndexedColors.java&r1=695757&r2=696584&rev=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/util/IndexedColors.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/IndexedColors.java Thu Sep 18 00:42:40 2008
@@ -1,16 +1,79 @@
-package org.apache.poi.xssf.util;
+package org.apache.poi.xssf.usermodel;
-public class IndexedColors {
-
- public static int BLACK=0;
- public static int WHITE=1;
- public static int RED=2;
- public static int GREEN=3;
- public static int BLUE=4;
- public static int YELLOW=5;
- public static int PINK=6;
-
- public static int LIGHT_GREY=22;
- public static int DARK_GREY=23;
-
+/**
+ * A deprecated indexing scheme for colours that is still required for some records, and for backwards
+ * compatibility with OLE2 formats.
+ *
+ * <p>
+ * Each element corresponds to a color index (zero-based). When using the default indexed color palette,
+ * the values are not written out, but instead are implied. When the color palette has been modified from default,
+ * then the entire color palette is used.
+ * </p>
+ *
+ * @author Yegor Kozlov
+ */
+public enum IndexedColors {
+
+ BLACK(8),
+ WHITE(9),
+ RED(10),
+ BRIGHT_GREEN(11),
+ BLUE(12),
+ YELLOW(13),
+ PINK(14),
+ TURQUOISE(15),
+ DARK_RED(16),
+ GREEN(17),
+ DARK_BLUE(18),
+ DARK_YELLOW(19),
+ VIOLET(20),
+ TEAL(21),
+ GREY_25_PERCENT(22),
+ GREY_50_PERCENT(23),
+ CORNFLOWER_BLUE(24),
+ MAROON(25),
+ LEMON_CHIFFON(26),
+ ORCHID(28),
+ CORAL(29),
+ ROYAL_BLUE(30),
+ LIGHT_CORNFLOWER_BLUE(31),
+ SKY_BLUE(40),
+ LIGHT_TURQUOISE(41),
+ LIGHT_GREEN(42),
+ LIGHT_YELLOW(43),
+ PALE_BLUE(44),
+ ROSE(45),
+ LAVENDER(46),
+ TAN(47),
+ LIGHT_BLUE(48),
+ AQUA(49),
+ LIME(50),
+ GOLD(51),
+ LIGHT_ORANGE(52),
+ ORANGE(53),
+ BLUE_GREY(54),
+ GREY_40_PERCENT(55),
+ DARK_TEAL(56),
+ SEA_GREEN(57),
+ DARK_GREEN(58),
+ OLIVE_GREEN(59),
+ BROWN(60),
+ PLUM(61),
+ INDIGO(62),
+ GREY_80_PERCENT(63);
+
+ private short index;
+
+ IndexedColors(int idx){
+ index = (short)idx;
+ }
+
+ /**
+ * Returns index of this color
+ *
+ * @return index of this color
+ */
+ public short getIndex(){
+ return index;
+ }
}
Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java Thu Sep 18 00:42:40 2008
@@ -392,6 +392,10 @@
}
+ public void setCellValue(String str) {
+ this.setCellValue(new XSSFRichTextString(str));
+ }
+
public void setCellValue(RichTextString value) {
if(this.cell.getT() == STCellType.INLINE_STR) {
this.cell.setV(value.getString());
@@ -401,6 +405,7 @@
this.cell.setT(STCellType.S);
}
XSSFRichTextString rt = (XSSFRichTextString)value;
+ rt.setStylesTableReference(stylesSource);
int sRef = sharedStringSource.addEntry(rt.getCTRst());
this.cell.setV(Integer.toString(sRef));
}
@@ -437,13 +442,6 @@
}
}
- /**
- * Creates an XSSFRichTextString for you.
- */
- public RichTextString createRichTextString(String text) {
- return new XSSFRichTextString(text);
- }
-
public Hyperlink getHyperlink() {
return row.getSheet().getHyperlink(row.getRowNum(), cellNum);
}
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=696584&r1=696583&r2=696584&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 Thu Sep 18 00:42:40 2008
@@ -417,7 +417,7 @@
return (short) getBorderColor(side).getIndexed();
}
- private void setBorderColorIndexed(BorderSide side, long color) {
+ private void setBorderColorIndexed(BorderSide side, int color) {
getBorderColor(side).setIndexed(color);
}
Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFont.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFont.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFont.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFont.java Thu Sep 18 00:42:40 2008
@@ -1,491 +1,406 @@
-/* ====================================================================
- 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;
-
-import java.util.LinkedList;
-
-import org.apache.poi.ss.usermodel.Font;
-
-import org.apache.poi.xssf.util.CTFontWrapper;
-import org.apache.poi.xssf.util.Charset;
-import org.apache.poi.xssf.util.IndexedColors;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBooleanProperty;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor;
-
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFont;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFontName;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFontScheme;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFontSize;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTIntProperty;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTUnderlineProperty;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTVerticalAlignFontProperty;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.STFontScheme;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.STUnderlineValues;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignRun;
-
-public class XSSFFont implements Font {
-
-
- public static final int SCHEME_MAJOR=2;
- public static final int SCHEME_MINOR=3;
- public static final int SCHEME_NONE=0;
-
- public static final int FONT_FAMILY_NOT_APPLICABLE=0;
- public static final int FONT_FAMILY_ROMAN=1;
- public static final int FONT_FAMILY_SWISS=2;
- public static final int FONT_FAMILY_MODERN=3;
- public static final int FONT_FAMILY_SCRIPT=4;
- public static final int FONT_FAMILY_DECORATIVE=5;
-
-
- public static final String DEFAULT_FONT_NAME="Calibri";
- public static final short DEFAULT_FONT_SIZE=11;
- public static final short DEFAULT_FONT_COLOR=(short)IndexedColors.BLACK;
-
- private int index=0;
-
-
- private CTFontWrapper fontWrapper;
-
-
-
- public XSSFFont(CTFont font) {
- this.fontWrapper=new CTFontWrapper(font);
- }
-
- /*
- public XSSFFont(int index) {
- this.fontWrapper=new CTFontWrapper(font);
- this.index=index;
- }
- */
-
- public XSSFFont() {
- this.fontWrapper = new CTFontWrapper(CTFont.Factory.newInstance());
- }
-
-
- public CTFont getCTFont(){
- return fontWrapper.getCTFont();
- }
-
-
- public short getBoldweight() {
- CTBooleanProperty bold=fontWrapper.getB();
- if(bold!=null && bold.getVal())
- return Font.BOLDWEIGHT_BOLD;
- else
- return Font.BOLDWEIGHT_NORMAL;
- }
-
-
-
- public byte getCharSet() {
- CTIntProperty charset= fontWrapper.getCharset();
- if(charset!=null){
- //this value must be set -- can't be null
- switch (charset.getVal()) {
- case Charset.ANSI_CHARSET:
- return Font.ANSI_CHARSET;
-
- case Charset.DEFAULT_CHARSET:
- return Font.DEFAULT_CHARSET;
-
- case Charset.SYMBOL_CHARSET:
- return Font.SYMBOL_CHARSET;
-
- default://maight be correct to return this byte value???
- return Byte.parseByte(Integer.toString(charset.getVal()));
- }
- }
- else
- return Font.ANSI_CHARSET;
- }
-
- public short getColor() {
- CTColor color=fontWrapper.getColor();
- long index=color.getIndexed();
- if (index==XSSFFont.DEFAULT_FONT_COLOR){
- return Font.COLOR_NORMAL;
- }
- else if(index==IndexedColors.RED){
- return Font.COLOR_RED;
- }
- else{
- return Short.parseShort(new Long(index).toString());
- }
- }
-
- public short getFontHeight() {
- if(fontWrapper.getSz()!=null){
- double fontHeight= fontWrapper.getSz().getVal()/20;
- return (short)fontHeight;
- }
- else
- return DEFAULT_FONT_SIZE/20;
- }
-
- public short getFontHeightInPoints() {
- if(fontWrapper.getSz()!=null){
- double fontHeight= fontWrapper.getSz().getVal();// /72;
- return (short)fontHeight;//new Double(fontHeight).shortValue();
- }
- else
- return DEFAULT_FONT_SIZE;
- }
-
- //AGGIUNGERE CONTROLLO NULL
- public String getFontName() {
- if(fontWrapper.getName()!=null)
- return fontWrapper.getName().getVal();
- else
- return DEFAULT_FONT_NAME;
- }
-
-
- public short getIndex() {
- // TODO Auto-generated method stub
- return 0;
- }
-
- public boolean getItalic() {
- if(fontWrapper.getI()!=null)
- return fontWrapper.getI().getVal();
- else
- return false;
- }
-
- public boolean getStrikeout() {
- if(fontWrapper.getStrike()!=null)
- return fontWrapper.getStrike().getVal();
- else
- return false;
- }
-
- public short getTypeOffset() {
- if(fontWrapper.getVertAlign()!=null){
- int val=fontWrapper.getVertAlign().getVal().intValue();
- switch (val) {
- case STVerticalAlignRun.INT_BASELINE:
- return Font.SS_NONE;
- case STVerticalAlignRun.INT_SUBSCRIPT:
- return Font.SS_SUB;
- case STVerticalAlignRun.INT_SUPERSCRIPT:
- return Font.SS_SUPER;
- default: throw new RuntimeException("Wrong offset value "+val);
- }
- }
- else
- return Font.SS_NONE;
- }
-
- public byte getUnderline() {
- if(fontWrapper.getU()!=null){
- //attenzione : -- get val pu tornare null----
- switch (fontWrapper.getU().getVal().intValue()) {
- case STUnderlineValues.INT_DOUBLE:
- return Font.U_DOUBLE;
- case STUnderlineValues.INT_DOUBLE_ACCOUNTING:
- return Font.U_DOUBLE_ACCOUNTING;
-
- case STUnderlineValues.INT_SINGLE_ACCOUNTING:
- return Font.U_SINGLE_ACCOUNTING;
-
- case STUnderlineValues.INT_NONE:
- return Font.U_NONE;
-
- case STUnderlineValues.INT_SINGLE:
- default:
- return Font.U_SINGLE;
- }
- }
- return Font.U_NONE;
- }
-
- public void setBoldweight(short boldweight) {
- if(boldweight==Font.BOLDWEIGHT_BOLD){
-
- CTBooleanProperty bold;
- if(fontWrapper.getCTFont().getBArray().length==0){
- bold=fontWrapper.getCTFont().addNewB();
- }
- else{
- bold=CTBooleanProperty.Factory.newInstance();
- }
- bold.setVal(true);
- fontWrapper.setB(bold);
- }
- }
-
- public void setCharSet(byte charset) {
- CTIntProperty charsetProperty;
- if(fontWrapper.getCTFont().getCharsetArray().length==0){
- charsetProperty=fontWrapper.getCTFont().addNewCharset();
- }
- else{
- charsetProperty=CTIntProperty.Factory.newInstance();
- }
- switch (charset) {
- case Font.ANSI_CHARSET:
- charsetProperty.setVal(Charset.ANSI_CHARSET);
- break;
- case Font.SYMBOL_CHARSET:
- charsetProperty.setVal(Charset.SYMBOL_CHARSET);
- break;
- case Font.DEFAULT_CHARSET:
- charsetProperty.setVal(Charset.DEFAULT_CHARSET);
- break;
- default:
- throw new RuntimeException("Attention: an attempt to set a type of unknow charset and charset");
- }
-
- fontWrapper.setCharset(charsetProperty);
- }
-
-
- public void setColor(short color) {
- CTColor ctColor;
- if(fontWrapper.getCTFont().getColorArray().length==0){
- ctColor=fontWrapper.getCTFont().addNewColor();
- }
- else{
- ctColor=CTColor.Factory.newInstance();
- }
-
- switch (color) {
- case Font.COLOR_NORMAL:{
- ctColor.setIndexed(XSSFFont.DEFAULT_FONT_COLOR);
- break;
- }
- case Font.COLOR_RED:{
- ctColor.setIndexed(IndexedColors.RED);
- break;
- }
- default:
- ctColor.setIndexed(color);
- }
-
- fontWrapper.setColor(ctColor);
- }
-
-
-
- public void setFontHeight(short height) {
- CTFontSize fontSize;
- if(fontWrapper.getCTFont().getSzArray().length==0){
- fontSize=fontWrapper.getCTFont().addNewSz();
- }
- else{
- fontSize=CTFontSize.Factory.newInstance();
- }
- fontSize.setVal(height*20);
- fontWrapper.setSz(fontSize);
- }
-
-
- public void setFontHeightInPoints(short height) {
- CTFontSize fontSize;
- if(fontWrapper.getCTFont().getSzArray().length==0){
- fontSize=fontWrapper.getCTFont().addNewSz();
- }
- else{
- fontSize=CTFontSize.Factory.newInstance();
- }
-
- fontSize.setVal(height);
- fontWrapper.setSz(fontSize);
- }
-
-
-
- public void setFontName(String name) {
- CTFontName fontName;
- if(fontWrapper.getCTFont().getNameArray().length==0){
- fontName=fontWrapper.getCTFont().addNewName();
- }
- else{
- fontName=CTFontName.Factory.newInstance();
- }
-
- fontName.setVal(name);
- fontWrapper.setName(fontName);
- }
-
-
- public void setItalic(boolean italic) {
- CTBooleanProperty bool;
- if(fontWrapper.getCTFont().getIArray().length==0){
- bool=fontWrapper.getCTFont().addNewI();
- }
- else{
- bool=CTBooleanProperty.Factory.newInstance();
- }
-
- bool.setVal(italic);
- fontWrapper.setI(bool);
- }
-
- public void setStrikeout(boolean strikeout) {
- CTBooleanProperty strike;
- if(fontWrapper.getCTFont().getStrikeArray().length==0){
- strike=fontWrapper.getCTFont().addNewStrike();
- }
- else{
- strike=CTBooleanProperty.Factory.newInstance();
- }
- strike.setVal(strikeout);
- fontWrapper.setStrike(strike);
- }
-
- public void setTypeOffset(short offset) {
- CTVerticalAlignFontProperty offsetProperty;
- if(fontWrapper.getCTFont().getVertAlignArray().length==0){
- offsetProperty=fontWrapper.getCTFont().addNewVertAlign();
- }
- else{
- offsetProperty=CTVerticalAlignFontProperty.Factory.newInstance();
- }
- switch (offset) {
- case Font.SS_NONE:
- offsetProperty.setVal(STVerticalAlignRun.BASELINE);
- break;
- case Font.SS_SUB:
- offsetProperty.setVal(STVerticalAlignRun.SUBSCRIPT);
- break;
- case Font.SS_SUPER:
- offsetProperty.setVal(STVerticalAlignRun.SUPERSCRIPT);
- break;
- }
- fontWrapper.setVertAlign(offsetProperty);
- }
-
- public void setUnderline(byte underline) {
- CTUnderlineProperty ctUnderline;
- if(fontWrapper.getCTFont().getUArray().length==0){
- ctUnderline=fontWrapper.getCTFont().addNewU();
- }
- else{
- ctUnderline=CTUnderlineProperty.Factory.newInstance();
- }
- switch (underline) {
- case Font.U_DOUBLE:
- ctUnderline.setVal(STUnderlineValues.DOUBLE);
- break;
- case Font.U_DOUBLE_ACCOUNTING:
- ctUnderline.setVal(STUnderlineValues.DOUBLE_ACCOUNTING);
- break;
- case Font.U_SINGLE_ACCOUNTING:
- ctUnderline.setVal(STUnderlineValues.SINGLE_ACCOUNTING);
- break;
- case Font.U_NONE:
- ctUnderline.setVal(STUnderlineValues.NONE);
- break;
-
- case Font.U_SINGLE:
- default:
- ctUnderline.setVal(STUnderlineValues.SINGLE);
- break;
- }
-
- fontWrapper.setU(ctUnderline);
- }
-
-
- public long putFont(LinkedList<CTFont> fonts) {
- //TODO
- /*
- * we need to implement a method equals to check that 2 instances of CTFont
- * are different by comparison of all font attributes.
- * NB: take a look to findFont method in XSSFWorkbook
- */
- CTFont font=fontWrapper.getCTFont();
- if(fonts.contains(font)) {
- return fonts.indexOf(font);
- }
- fonts.add(font);
- return fonts.size() - 1;
- }
-
- // solo di xssfFont - non di Font-
- //sono utilizzati nel metodo createDefaultFont in StylesTable insta.
-
- public int getScheme(){
- int fontScheme = fontWrapper.getFontScheme().getVal().intValue();
- switch (fontScheme) {
- case STFontScheme.INT_MAJOR:
- return XSSFFont.SCHEME_MAJOR;
- case STFontScheme.INT_MINOR:
- return XSSFFont.SCHEME_MINOR;
- case STFontScheme.INT_NONE:
- return XSSFFont.SCHEME_NONE;
-
- default:
- return fontScheme;
- }
- }
-
-
- public void setScheme(int scheme){
- CTFontScheme ctFontScheme;
- if(fontWrapper.getCTFont().getSchemeArray().length==0){
- ctFontScheme=fontWrapper.getCTFont().addNewScheme();
- }
- else{
- ctFontScheme=CTFontScheme.Factory.newInstance();
- }
- switch (scheme) {
- case XSSFFont.SCHEME_MAJOR:
- ctFontScheme.setVal(STFontScheme.MAJOR);
- break;
- case XSSFFont.SCHEME_MINOR:
- ctFontScheme.setVal(STFontScheme.MINOR);
- break;
- case XSSFFont.SCHEME_NONE:
- ctFontScheme.setVal(STFontScheme.NONE);
- break;
- default:
- throw new RuntimeException("Schema value ["+ scheme +"] not supported in XSSFFont");
- }
-
- fontWrapper.setFontScheme(ctFontScheme);
- }
-
-
-
- public int getFamily(){
- if(fontWrapper.getFamily()!=null)
- return fontWrapper.getFamily().getVal();
- else
- return XSSFFont.FONT_FAMILY_SWISS;
- }
-
- public void setFamily(int value){
- //TODO
- CTIntProperty family;
- if(fontWrapper.getCTFont().getSchemeArray().length==0){
- family=fontWrapper.getCTFont().addNewFamily();
- }
- else{
- family=CTIntProperty.Factory.newInstance();
- }
- family.setVal(value);
- //fontWrapper.setFamily
- }
-
-
-
-}
+/* ====================================================================
+ 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;
+
+import org.apache.poi.ss.usermodel.Font;
+
+import org.apache.poi.xssf.util.Charset;
+import org.apache.poi.xssf.usermodel.extensions.XSSFColor;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBooleanProperty;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor;
+
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFont;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFontName;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFontScheme;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFontSize;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTIntProperty;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTUnderlineProperty;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTVerticalAlignFontProperty;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.STFontScheme;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.STUnderlineValues;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignRun;
+
+import java.util.ArrayList;
+
+public class XSSFFont implements Font {
+
+
+ public static final int SCHEME_MAJOR=2;
+ public static final int SCHEME_MINOR=3;
+ public static final int SCHEME_NONE=0;
+
+ public static final int FONT_FAMILY_NOT_APPLICABLE=0;
+ public static final int FONT_FAMILY_ROMAN=1;
+ public static final int FONT_FAMILY_SWISS=2;
+ public static final int FONT_FAMILY_MODERN=3;
+ public static final int FONT_FAMILY_SCRIPT=4;
+ public static final int FONT_FAMILY_DECORATIVE=5;
+
+
+ public static final String DEFAULT_FONT_NAME="Calibri";
+ public static final short DEFAULT_FONT_SIZE=11;
+ public static final short DEFAULT_FONT_COLOR = IndexedColors.BLACK.getIndex();
+
+ private CTFont ctFont;
+
+ public XSSFFont(CTFont font) {
+ this.ctFont=font;
+ }
+
+ protected XSSFFont() {
+ this.ctFont = CTFont.Factory.newInstance();
+ }
+
+
+ public CTFont getCTFont(){
+ return ctFont;
+ }
+
+ /**
+ *
+ */
+ public boolean getBold() {
+ CTBooleanProperty bold=ctFont.sizeOfBArray() == 0 ? null : ctFont.getBArray(0);
+ return (bold!=null && bold.getVal());
+ }
+
+
+
+ public byte getCharSet() {
+ CTIntProperty charset= ctFont.sizeOfCharsetArray() == 0?null:ctFont.getCharsetArray(0);
+ if(charset!=null){
+ //this value must be set -- can't be null
+ switch (charset.getVal()) {
+ case Charset.ANSI_CHARSET:
+ return Font.ANSI_CHARSET;
+
+ case Charset.DEFAULT_CHARSET:
+ return Font.DEFAULT_CHARSET;
+
+ case Charset.SYMBOL_CHARSET:
+ return Font.SYMBOL_CHARSET;
+
+ default://maight be correct to return this byte value???
+ return Byte.parseByte(Integer.toString(charset.getVal()));
+ }
+ }
+ else
+ return Font.ANSI_CHARSET;
+ }
+
+ public short getColor() {
+ CTColor color=ctFont.sizeOfColorArray()==0?null: ctFont.getColorArray(0);
+ if(color == null) return Font.COLOR_NORMAL;
+
+ long index=color.getIndexed();
+ if (index==XSSFFont.DEFAULT_FONT_COLOR){
+ return Font.COLOR_NORMAL;
+ }
+ else if(index == IndexedColors.RED.getIndex()){
+ return Font.COLOR_RED;
+ }
+ else{
+ return Short.parseShort(new Long(index).toString());
+ }
+ }
+
+
+ public byte[] getRgbColor() {
+ CTColor color=ctFont.sizeOfColorArray()==0?null: ctFont.getColorArray(0);
+ return color.getRgb();
+ }
+
+ public short getThemeColor() {
+ CTColor color=ctFont.sizeOfColorArray()==0?null: ctFont.getColorArray(0);
+ long index=color.getTheme();
+ return (short)index;
+ }
+
+
+ public short getFontHeight() {
+ CTFontSize size=ctFont.sizeOfSzArray()==0?null: ctFont.getSzArray(0);
+ if(size!=null){
+ double fontHeight= size.getVal()/20;
+ return (short)fontHeight;
+ }
+ else
+ return DEFAULT_FONT_SIZE/20;
+ }
+
+ public short getFontHeightInPoints() {
+ CTFontSize size=ctFont.sizeOfSzArray()==0?null: ctFont.getSzArray(0);
+ if(size!=null){
+ double fontHeight= size.getVal();
+ return (short)fontHeight;
+ }
+ else
+ return DEFAULT_FONT_SIZE;
+ }
+
+
+ public String getFontName() {
+ CTFontName name=ctFont.sizeOfNameArray()==0?null:ctFont.getNameArray(0);
+ return name==null? null:name.getVal();
+ }
+
+
+ public boolean getItalic() {
+ CTBooleanProperty italic=ctFont.sizeOfIArray()==0?null:ctFont.getIArray(0);
+ return italic!=null && italic.getVal();
+ }
+
+ public boolean getStrikeout() {
+ CTBooleanProperty strike=ctFont.sizeOfStrikeArray()==0?null:ctFont.getStrikeArray(0);
+ return strike!=null && strike.getVal();
+ }
+
+ public short getTypeOffset() {
+ CTVerticalAlignFontProperty vAlign=ctFont.sizeOfVertAlignArray()==0?null:ctFont.getVertAlignArray(0);
+ if(vAlign!=null){
+ int val=vAlign.getVal().intValue();
+ switch (val) {
+ case STVerticalAlignRun.INT_BASELINE:
+ return Font.SS_NONE;
+ case STVerticalAlignRun.INT_SUBSCRIPT:
+ return Font.SS_SUB;
+ case STVerticalAlignRun.INT_SUPERSCRIPT:
+ return Font.SS_SUPER;
+ default: throw new RuntimeException("Wrong offset value "+val);
+ }
+ }
+ else
+ return Font.SS_NONE;
+ }
+
+ public byte getUnderline() {
+ CTUnderlineProperty underline=ctFont.sizeOfUArray()==0?null:ctFont.getUArray(0);
+ if(underline!=null){
+ switch (underline.getVal().intValue()) {
+ case STUnderlineValues.INT_DOUBLE:
+ return Font.U_DOUBLE;
+ case STUnderlineValues.INT_DOUBLE_ACCOUNTING:
+ return Font.U_DOUBLE_ACCOUNTING;
+
+ case STUnderlineValues.INT_SINGLE_ACCOUNTING:
+ return Font.U_SINGLE_ACCOUNTING;
+
+ case STUnderlineValues.INT_NONE:
+ return Font.U_NONE;
+
+ case STUnderlineValues.INT_SINGLE:
+ default:
+ return Font.U_SINGLE;
+ }
+ }
+ return Font.U_NONE;
+ }
+
+ /**
+ * Set characters in bold face font style.
+ * If omitted, the default value is true.
+ */
+ public void setBold(boolean bold) {
+ CTBooleanProperty ctBold=ctFont.sizeOfBArray()==0?ctFont.addNewB():ctFont.getBArray(0);
+ ctBold.setVal(true);
+ }
+
+ /**
+ *
+ */
+ public void setCharSet(byte charset) {
+ CTIntProperty charsetProperty=ctFont.sizeOfCharsetArray()==0?ctFont.addNewCharset():ctFont.getCharsetArray(0);
+ switch (charset) {
+ case Font.ANSI_CHARSET:
+ charsetProperty.setVal(Charset.ANSI_CHARSET);
+ break;
+ case Font.SYMBOL_CHARSET:
+ charsetProperty.setVal(Charset.SYMBOL_CHARSET);
+ break;
+ case Font.DEFAULT_CHARSET:
+ charsetProperty.setVal(Charset.DEFAULT_CHARSET);
+ break;
+ default:
+ throw new RuntimeException("Attention: an attempt to set a type of unknow charset and charset");
+ }
+ }
+
+
+ public void setColor(short color) {
+ CTColor ctColor=ctFont.sizeOfColorArray()==0?ctFont.addNewColor():ctFont.getColorArray(0);
+
+ switch (color) {
+ case Font.COLOR_NORMAL:{
+ ctColor.setIndexed(XSSFFont.DEFAULT_FONT_COLOR);
+ break;
+ }
+ case Font.COLOR_RED:{
+ ctColor.setIndexed(IndexedColors.RED.getIndex());
+ break;
+ }
+ default:
+ ctColor.setIndexed(color);
+ }
+ }
+
+
+
+ public void setFontHeight(short height) {
+ CTFontSize fontSize=ctFont.sizeOfSzArray()==0?ctFont.addNewSz():ctFont.getSzArray(0);
+ fontSize.setVal(height*20);
+ }
+
+
+ public void setFontHeightInPoints(short height) {
+ CTFontSize fontSize=ctFont.sizeOfSzArray()==0?ctFont.addNewSz():ctFont.getSzArray(0);
+ fontSize.setVal(height);
+ }
+
+
+
+ public void setRgbColor(XSSFColor color) {
+ CTColor ctColor=ctFont.sizeOfColorArray()==0?ctFont.addNewColor():ctFont.getColorArray(0);
+ ctColor.setRgb(color.getRgb());
+ }
+
+ public void setThemeColor(short theme) {
+ CTColor ctColor=ctFont.sizeOfColorArray()==0?ctFont.addNewColor():ctFont.getColorArray(0);
+ ctColor.setTheme(theme);
+ }
+
+ public void setFontName(String name) {
+ CTFontName fontName=ctFont.sizeOfNameArray()==0?ctFont.addNewName():ctFont.getNameArray(0);
+ fontName.setVal(name);
+ }
+
+ public void setItalic(boolean italic) {
+ CTBooleanProperty bool=ctFont.sizeOfIArray()==0?ctFont.addNewI():ctFont.getIArray(0);
+ bool.setVal(italic);
+ }
+
+ public void setStrikeout(boolean strikeout) {
+ CTBooleanProperty strike=ctFont.sizeOfStrikeArray()==0?ctFont.addNewStrike():ctFont.getStrikeArray(0);
+ strike.setVal(strikeout);
+ }
+
+ public void setTypeOffset(short offset) {
+ CTVerticalAlignFontProperty offsetProperty=ctFont.sizeOfVertAlignArray()==0?ctFont.addNewVertAlign(): ctFont.getVertAlignArray(0);
+ switch (offset) {
+ case Font.SS_NONE:
+ offsetProperty.setVal(STVerticalAlignRun.BASELINE);
+ break;
+ case Font.SS_SUB:
+ offsetProperty.setVal(STVerticalAlignRun.SUBSCRIPT);
+ break;
+ case Font.SS_SUPER:
+ offsetProperty.setVal(STVerticalAlignRun.SUPERSCRIPT);
+ break;
+ }
+ }
+
+ public void setUnderline(byte underline) {
+ CTUnderlineProperty ctUnderline=ctFont.sizeOfUArray()==0?ctFont.addNewU():ctFont.getUArray(0);
+ switch (underline) {
+ case Font.U_DOUBLE:
+ ctUnderline.setVal(STUnderlineValues.DOUBLE);
+ break;
+ case Font.U_DOUBLE_ACCOUNTING:
+ ctUnderline.setVal(STUnderlineValues.DOUBLE_ACCOUNTING);
+ break;
+ case Font.U_SINGLE_ACCOUNTING:
+ ctUnderline.setVal(STUnderlineValues.SINGLE_ACCOUNTING);
+ break;
+ case Font.U_NONE:
+ ctUnderline.setVal(STUnderlineValues.NONE);
+ break;
+
+ case Font.U_SINGLE:
+ default:
+ ctUnderline.setVal(STUnderlineValues.SINGLE);
+ break;
+ }
+ }
+
+
+ public long putFont(ArrayList<CTFont> fonts) {
+ //TODO
+ /*
+ * we need to implement a method equals to check that 2 instances of CTFont
+ * are different by comparison of all font attributes.
+ * NB: take a look to findFont method in XSSFWorkbook
+ */
+ if(fonts.contains(ctFont)) {
+ return fonts.indexOf(ctFont);
+ }
+ fonts.add(ctFont);
+ return fonts.size() - 1;
+ }
+
+ // solo di xssfFont - non di Font-
+ //sono utilizzati nel metodo createDefaultFont in StylesTable insta.
+
+ public int getScheme(){
+ CTFontScheme scheme=ctFont.sizeOfSchemeArray()==0?null:ctFont.getSchemeArray(0);
+ if(scheme!=null){
+ int fontScheme = scheme.getVal().intValue();
+ switch (fontScheme) {
+ case STFontScheme.INT_MAJOR:
+ return XSSFFont.SCHEME_MAJOR;
+ case STFontScheme.INT_MINOR:
+ return XSSFFont.SCHEME_MINOR;
+ case STFontScheme.INT_NONE:
+ return XSSFFont.SCHEME_NONE;
+
+ default:
+ return fontScheme;
+ }
+ }
+ return 0;
+ }
+
+
+ public void setScheme(int scheme){
+ CTFontScheme ctFontScheme=ctFont.sizeOfSchemeArray()==0?ctFont.addNewScheme():ctFont.getSchemeArray(0);
+ switch (scheme) {
+ case XSSFFont.SCHEME_MAJOR:
+ ctFontScheme.setVal(STFontScheme.MAJOR);
+ break;
+ case XSSFFont.SCHEME_MINOR:
+ ctFontScheme.setVal(STFontScheme.MINOR);
+ break;
+ case XSSFFont.SCHEME_NONE:
+ ctFontScheme.setVal(STFontScheme.NONE);
+ break;
+ default:
+ throw new RuntimeException("Schema value ["+ scheme +"] not supported in XSSFFont");
+ }
+ }
+
+
+ public int getFamily(){
+ CTIntProperty family=ctFont.sizeOfFamilyArray()==0?ctFont.addNewFamily():ctFont.getFamilyArray(0);
+ if(family!=null)
+ return family.getVal();
+ else
+ return XSSFFont.FONT_FAMILY_SWISS;
+ }
+
+ public void setFamily(int value){
+ CTIntProperty family=ctFont.sizeOfFamilyArray()==0?ctFont.addNewFamily():ctFont.getFamilyArray(0);
+ family.setVal(value);
+ }
+
+}
Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java Thu Sep 18 00:42:40 2008
@@ -20,8 +20,9 @@
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.RichTextString;
import org.apache.poi.xssf.model.StylesTable;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRst;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRElt;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
+
+import java.util.ArrayList;
/**
@@ -30,23 +31,11 @@
* <p>
* Most strings in a workbook have formatting applied at the cell level, that is, the entire string in the cell has the
* same formatting applied. In these cases, the formatting for the cell is stored in the styles part,
- * and the string for the cell can be shared across the workbook. The following xml and code snippet illustrate the example.
+ * and the string for the cell can be shared across the workbook. The following code illustrates the example.
* </p>
*
* <blockquote>
* <pre>
- * <sst xmlns=http://schemas.openxmlformats.org/spreadsheetml/2006/5/main
- * count="1" uniqueCount="1">
- * <si>
- * <t>Apache POI</t>
- * </si>
- * </sst>
- * </pre>
- * </blockquote>
- *
- * The code to produce xml above:
- * <blockquote>
- * <pre>
* cell1.setCellValue(new XSSFRichTextString("Apache POI"));
* cell2.setCellValue(new XSSFRichTextString("Apache POI"));
* cell3.setCellValue(new XSSFRichTextString("Apache POI"));
@@ -73,56 +62,32 @@
* </pre>
* </blockquote>
*
- * The code above will produce the following xml:
- * <blockquote>
- * <pre>
- * <sst xmlns=http://schemas.openxmlformats.org/spreadsheetml/2006/5/main count="2" uniqueCount="2">
- * <si>
- * <r>
- * <rPr>
- * <b/>
- * <sz val="11"/>
- * <color theme="1"/>
- * <rFont val="Arial"/>
- * <family val="2"/>
- * <scheme val="minor"/>
- * </rPr>
- * <t>Apache POI</t>
- * </r>
- * </si>
- * <si>
- * <r>
- * <rPr>
- * <i/>
- * <sz val="11"/>
- * <color theme="1"/>
- * <rFont val="Courier"/>
- * <family val="1"/>
- * <scheme val="minor"/>
- * </rPr>
- * <t>Apache POI</t>
- * </r>
- * </si>
- *</sst>
- *
- * </pre>
- * </blockquote>
*
* @author Yegor Kozlov
*/
public class XSSFRichTextString implements RichTextString {
private CTRst st;
private StylesTable styles;
+ private ArrayList<CTRPrElt> fontIdRuns;
+ /**
+ * Create a rich text string and initialize it with empty string
+ */
public XSSFRichTextString(String str) {
st = CTRst.Factory.newInstance();
st.setT(str);
}
+ /**
+ * Create empty rich text string
+ */
public XSSFRichTextString() {
st = CTRst.Factory.newInstance();
}
+ /**
+ * Create a rich text string from the supplied XML bean
+ */
public XSSFRichTextString(CTRst st) {
this.st = st;
}
@@ -135,8 +100,17 @@
* @param fontIndex The font to use.
*/
public void applyFont(int startIndex, int endIndex, short fontIndex) {
- // TODO Auto-generated method stub
-
+ XSSFFont font;
+ if(styles == null) {
+ //style table is not set, remember fontIndex and set the run properties later,
+ //when setStylesTableReference is called
+ font = new XSSFFont();
+ font.setFontName("#" + fontIndex);
+ fontIdRuns = new ArrayList<CTRPrElt>();
+ } else {
+ font = (XSSFFont)styles.getFontAt(fontIndex);
+ }
+ applyFont(startIndex, endIndex, font);
}
/**
@@ -147,7 +121,69 @@
* @param font The index of the font to use.
*/
public void applyFont(int startIndex, int endIndex, Font font) {
- applyFont(0, length(), font.getIndex());
+ if (startIndex > endIndex)
+ throw new IllegalArgumentException("Start index must be less than end index.");
+ if (startIndex < 0 || endIndex > length())
+ throw new IllegalArgumentException("Start and end index not in range.");
+ if (startIndex == endIndex)
+ return;
+
+ if(st.sizeOfRArray() == 0 && st.isSetT()) {
+ //convert <t>string</t> into a text run: <r><t>string</t></r>
+ st.addNewR().setT(st.getT());
+ st.unsetT();
+ }
+
+ String text = getString();
+
+ XSSFFont xssfFont = (XSSFFont)font;
+ ArrayList<CTRElt> runs = new ArrayList<CTRElt>();
+
+ int pos = 0;
+ int i;
+ for (i = 0; i < st.sizeOfRArray(); i++) {
+ CTRElt r = st.getRArray(i);
+
+ int len = r.getT().length();
+ int p1 = pos;
+ int p2 = pos + len;
+ if(startIndex > p2) {
+ runs.add(r);
+ } else if (startIndex >= p1 && startIndex < p2){
+ String t = r.getT();
+ r.setT(t.substring(0, startIndex-p1));
+ runs.add(r);
+ } else {
+ break;
+ }
+ pos = p2;
+ }
+ CTRElt r = CTRElt.Factory.newInstance();
+ r.setT(text.substring(startIndex, endIndex));
+ CTRPrElt pr = r.addNewRPr();
+ setRunAttributes(xssfFont.getCTFont(), pr);
+ if(fontIdRuns != null) fontIdRuns.add(pr);
+ runs.add(r);
+
+ for (; i < st.sizeOfRArray(); i++) {
+ r = st.getRArray(i);
+
+ int len = r.getT().length();
+ int p1 = pos;
+ int p2 = pos + len;
+ if(endIndex > p2) {
+ ;
+ } else if (endIndex >= p1 && endIndex < p2){
+ String t = r.getT();
+ r.setT(t.substring(endIndex-p1, len));
+ runs.add(r);
+ } else {
+ runs.add(r);
+ }
+ pos = p2;
+ }
+
+ st.setRArray(runs.toArray(new CTRElt[runs.size()]));
}
/**
@@ -155,7 +191,20 @@
* @param font The font to use.
*/
public void applyFont(Font font) {
- applyFont(0, length(), font);
+ if(st.sizeOfRArray() == 0 && st.isSetT()) {
+ CTRElt r = st.addNewR();
+ r.setT(st.getT());
+ setRunAttributes(((XSSFFont)font).getCTFont(), r.addNewRPr());
+ st.unsetT();
+ } else {
+ CTRElt r = CTRElt.Factory.newInstance();
+ r.setT(getString());
+ setRunAttributes(((XSSFFont)font).getCTFont(), r.addNewRPr());
+ st.setRArray(new CTRElt[]{r});
+ }
+
+ if(fontIdRuns != null) fontIdRuns.add(st.getRArray(0).getRPr());
+
}
/**
@@ -164,50 +213,118 @@
* @param fontIndex the font to apply.
*/
public void applyFont(short fontIndex) {
- applyFont(0, length(), fontIndex);
+ XSSFFont font;
+ if(styles == null) {
+ font = new XSSFFont();
+ font.setFontName("#" + fontIndex);
+ fontIdRuns = new ArrayList<CTRPrElt>();
+ } else {
+ font = (XSSFFont)styles.getFontAt(fontIndex);
+ }
+ applyFont(font);
}
/**
- * Removes any formatting that may have been applied to the string.
+ * Append new text to this text run and apply the specify font to it
+ *
+ * @param text the text to append
+ * @param font the font to apply to the appended text or <code>null</code> if no formatting is required
*/
- public void clearFormatting() {
- for (int i = 0; i < st.sizeOfRArray(); i++) {
- st.removeR(i);
+ public void append(String text, XSSFFont font){
+ if(st.sizeOfRArray() == 0 && st.isSetT()) {
+ //convert <t>string</t> into a text run: <r><t>string</t></r>
+ st.addNewR().setT(st.getT());
+ st.unsetT();
}
+ CTRElt lt = st.addNewR();
+ lt.setT(text);
+ CTRPrElt pr = lt.addNewRPr();
+ if(font != null) setRunAttributes(font.getCTFont(), pr);
+
+ if(fontIdRuns != null) fontIdRuns.add(pr);
}
/**
- * Returns the font in use at a particular index.
+ * Append new text to this text run
*
- * @param index The index.
- * @return The font that's currently being applied at that
- * index or null if no font is being applied or the
- * index is out of range.
+ * @param text the text to append
*/
- public short getFontAtIndex(int index) {
- // TODO Auto-generated method stub
- return 0;
+ public void append(String text){
+ append(text, null);
}
/**
- * Gets the font used in a particular formatting run.
- *
- * @param index the index of the formatting run
- * @return the font number used.
+ * Copy font attributes from CTFont bean into CTRPrElt bean
*/
- public short getFontOfFormattingRun(int index) {
- // TODO Auto-generated method stub
- return 0;
+ private void setRunAttributes(CTFont ctFont, CTRPrElt pr){
+ if(ctFont.sizeOfBArray() > 0) pr.addNewB().setVal(ctFont.getBArray(0).getVal());
+ if(ctFont.sizeOfUArray() > 0) pr.addNewU().setVal(ctFont.getUArray(0).getVal());
+ if(ctFont.sizeOfIArray() > 0) pr.addNewI().setVal(ctFont.getIArray(0).getVal());
+ if(ctFont.sizeOfColorArray() > 0) {
+ CTColor c1 = ctFont.getColorArray(0);
+ CTColor c2 = pr.addNewColor();
+ if(c1.isSetAuto()) c2.setAuto(c1.getAuto());
+ if(c1.isSetIndexed()) c2.setIndexed(c1.getIndexed());
+ if(c1.isSetRgb()) c2.setRgb(c1.getRgb());
+ if(c1.isSetTheme()) c2.setTheme(c1.getTheme());
+ if(c1.isSetTint()) c2.setTint(c1.getTint());
+ }
+ if(ctFont.sizeOfNameArray() > 0) pr.addNewRFont().setVal(ctFont.getNameArray(0).getVal());
+ if(ctFont.sizeOfFamilyArray() > 0) pr.addNewFamily().setVal(ctFont.getFamilyArray(0).getVal());
+ if(ctFont.sizeOfSchemeArray() > 0) pr.addNewScheme().setVal(ctFont.getSchemeArray(0).getVal());
+ if(ctFont.sizeOfCharsetArray() > 0) pr.addNewCharset().setVal(ctFont.getCharsetArray(0).getVal());
+ if(ctFont.sizeOfCondenseArray() > 0) pr.addNewCondense().setVal(ctFont.getCondenseArray(0).getVal());
+ if(ctFont.sizeOfExtendArray() > 0) pr.addNewExtend().setVal(ctFont.getExtendArray(0).getVal());
+ if(ctFont.sizeOfVertAlignArray() > 0) pr.addNewVertAlign().setVal(ctFont.getVertAlignArray(0).getVal());
+ if(ctFont.sizeOfOutlineArray() > 0) pr.addNewOutline().setVal(ctFont.getOutlineArray(0).getVal());
+ if(ctFont.sizeOfShadowArray() > 0) pr.addNewShadow().setVal(ctFont.getShadowArray(0).getVal());
+ if(ctFont.sizeOfStrikeArray() > 0) pr.addNewStrike().setVal(ctFont.getStrikeArray(0).getVal());
+ }
+
+ /**
+ * Removes any formatting that may have been applied to the string.
+ */
+ public void clearFormatting() {
+ String text = getString();
+ while (st.sizeOfRArray() > 0) {
+ st.removeR(st.sizeOfRArray()-1);
+ }
+ st.setT(text);
}
/**
* The index within the string to which the specified formatting run applies.
+ *
* @param index the index of the formatting run
* @return the index within the string.
*/
public int getIndexOfFormattingRun(int index) {
- // TODO Auto-generated method stub
- return 0;
+ if(st.sizeOfRArray() == 0) return 0;
+
+ int pos = 0;
+ for(int i = 0; i < st.sizeOfRArray(); i++){
+ CTRElt r = st.getRArray(i);
+ if(i == index) return pos;
+
+ pos += r.getT().length();
+ }
+ return -1;
+ }
+
+ /**
+ * Returns the number of characters this format run covers.
+ *
+ * @param index the index of the formatting run
+ * @return the number of characters this format run covers
+ */
+ public int getLengthOfFormattingRun(int index) {
+ if(st.sizeOfRArray() == 0) return length();
+
+ for(int i = 0; i < st.sizeOfRArray(); i++){
+ CTRElt r = st.getRArray(i);
+ if(i == index) return r.getT().length();
+ }
+ return -1;
}
/**
@@ -256,6 +373,44 @@
}
/**
+ * Gets a copy of the font used in a particular formatting run.
+ *
+ * @param index the index of the formatting run
+ * @return A copy of the font used or null if no formatting is applied to the specified text run.
+ */
+ public XSSFFont getFontOfFormattingRun(int index) {
+ if(st.sizeOfRArray() == 0) return null;
+
+ for(int i = 0; i < st.sizeOfRArray(); i++){
+ CTRElt r = st.getRArray(i);
+ if(i == index) return new XSSFFont(toCTFont(r.getRPr()));
+ }
+ return null;
+ }
+
+ /**
+ * Return a copy of the font in use at a particular index.
+ *
+ * @param index The index.
+ * @return A copy of the font that's currently being applied at that
+ * index or null if no font is being applied or the
+ * index is out of range.
+ */
+ public XSSFFont getFontAtIndex( int index ) {
+ if(st.sizeOfRArray() == 0) return null;
+
+ int pos = 0;
+ for(int i = 0; i < st.sizeOfRArray(); i++){
+ CTRElt r = st.getRArray(i);
+ if(index >= pos && index < pos + r.getT().length()) return new XSSFFont(toCTFont(r.getRPr()));
+
+ pos += r.getT().length();
+ }
+ return null;
+
+ }
+
+ /**
* Return the underlying xml bean
*/
public CTRst getCTRst() {
@@ -264,5 +419,51 @@
protected void setStylesTableReference(StylesTable tbl){
styles = tbl;
+ if(fontIdRuns != null){
+ for (CTRPrElt pr : fontIdRuns) {
+ if(pr.sizeOfRFontArray() > 0 ) {
+ String fontName = pr.getRFontArray(0).getVal();
+ if(fontName.startsWith("#")){
+ int idx = Integer.parseInt(fontName.substring(1));
+ XSSFFont font = (XSSFFont)styles.getFontAt(idx);
+ pr.removeRFont(0);
+ setRunAttributes(font.getCTFont(), pr);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ *
+ * CTRPrElt --> CTFont adapter
+ */
+ protected static CTFont toCTFont(CTRPrElt pr){
+ CTFont ctFont = CTFont.Factory.newInstance();
+
+ if(pr.sizeOfBArray() > 0) ctFont.addNewB().setVal(pr.getBArray(0).getVal());
+ if(pr.sizeOfUArray() > 0) ctFont.addNewU().setVal(pr.getUArray(0).getVal());
+ if(pr.sizeOfIArray() > 0) ctFont.addNewI().setVal(pr.getIArray(0).getVal());
+ if(pr.sizeOfColorArray() > 0) {
+ CTColor c1 = pr.getColorArray(0);
+ CTColor c2 = ctFont.addNewColor();
+ if(c1.isSetAuto()) c2.setAuto(c1.getAuto());
+ if(c1.isSetIndexed()) c2.setIndexed(c1.getIndexed());
+ if(c1.isSetRgb()) c2.setRgb(c1.getRgb());
+ if(c1.isSetTheme()) c2.setTheme(c1.getTheme());
+ if(c1.isSetTint()) c2.setTint(c1.getTint());
+ }
+ if(pr.sizeOfRFontArray() > 0) ctFont.addNewName().setVal(pr.getRFontArray(0).getVal());
+ if(pr.sizeOfFamilyArray() > 0) ctFont.addNewFamily().setVal(pr.getFamilyArray(0).getVal());
+ if(pr.sizeOfSchemeArray() > 0) ctFont.addNewScheme().setVal(pr.getSchemeArray(0).getVal());
+ if(pr.sizeOfCharsetArray() > 0) ctFont.addNewCharset().setVal(pr.getCharsetArray(0).getVal());
+ if(pr.sizeOfCondenseArray() > 0) ctFont.addNewCondense().setVal(pr.getCondenseArray(0).getVal());
+ if(pr.sizeOfExtendArray() > 0) ctFont.addNewExtend().setVal(pr.getExtendArray(0).getVal());
+ if(pr.sizeOfVertAlignArray() > 0) ctFont.addNewVertAlign().setVal(pr.getVertAlignArray(0).getVal());
+ if(pr.sizeOfOutlineArray() > 0) ctFont.addNewOutline().setVal(pr.getOutlineArray(0).getVal());
+ if(pr.sizeOfShadowArray() > 0) ctFont.addNewShadow().setVal(pr.getShadowArray(0).getVal());
+ if(pr.sizeOfStrikeArray() > 0) ctFont.addNewStrike().setVal(pr.getStrikeArray(0).getVal());
+
+ return ctFont;
}
}
Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java Thu Sep 18 00:42:40 2008
@@ -134,6 +134,8 @@
if (this.worksheet.getSheetData() == null) {
this.worksheet.addNewSheetData();
}
+ //CTSheetView sheetView = getSheetTypeSheetView();
+ //sheetView.setWorkbookViewId(0);
initRows(this.worksheet);
initColumns(this.worksheet);
@@ -984,8 +986,17 @@
}
// HSSFSheet compatibility methods. See also the following zoom related methods
+ /**
+ * Sets the zoom magnication for the sheet. The zoom is expressed as a
+ * fraction. For example to express a zoom of 75% use 3 for the numerator
+ * and 4 for the denominator.
+ *
+ * @param numerator The numerator for the zoom magnification.
+ * @param denominator The denominator for the zoom magnification.
+ */
public void setZoom(int numerator, int denominator) {
- setZoom((numerator/denominator) * 100);
+ Float result = new Float(numerator)/new Float(denominator)*100;
+ setZoom(result.intValue());
}
public void setZoom(long scale) {
Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java?rev=696584&r1=696583&r2=696584&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java Thu Sep 18 00:42:40 2008
@@ -19,6 +19,7 @@
import java.io.IOException;
import java.io.OutputStream;
+import java.io.InputStream;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
@@ -102,6 +103,10 @@
public XSSFWorkbook(String path) throws IOException {
this(openPackage(path));
}
+ public XSSFWorkbook(InputStream is) throws IOException {
+ this(openPackage(is));
+ }
+
public XSSFWorkbook(Package pkg) throws IOException {
super(pkg);
try {
@@ -299,11 +304,11 @@
}
- public Font findFont(short boldWeight, short color, short fontHeight, String name, boolean italic, boolean strikeout, short typeOffset, byte underline) {
+ public XSSFFont findFont(short boldWeight, short color, short fontHeight, String name, boolean italic, boolean strikeout, short typeOffset, byte underline) {
short fontNum=getNumberOfFonts();
- for (short i = 0; i <= fontNum; i++) {
- XSSFFont xssfFont = (XSSFFont)getFontAt(i);
- if (xssfFont.getBoldweight() == boldWeight
+ for (short i = 0; i < fontNum; i++) {
+ XSSFFont xssfFont = getFontAt(i);
+ if ( xssfFont.getBold() == (boldWeight == XSSFFont.BOLDWEIGHT_BOLD)
&& xssfFont.getColor() == color
&& xssfFont.getFontHeightInPoints() == fontHeight
&& xssfFont.getFontName().equals(name)
@@ -384,8 +389,8 @@
return (short) getFirstVisibleTab();
}
- public Font getFontAt(short idx) {
- return stylesSource.getFontAt(idx);
+ public XSSFFont getFontAt(short idx) {
+ return (XSSFFont)stylesSource.getFontAt(idx);
}
public XSSFName getNameAt(int index) {
@@ -418,7 +423,7 @@
public short getNumberOfFonts() {
// TODO Auto-generated method stub
- return 0;
+ return (short)((StylesTable)stylesSource).getNumberOfFonts();
}
public int getNumberOfNames() {
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=696584&r1=696583&r2=696584&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 Thu Sep 18 00:42:40 2008
@@ -70,7 +70,7 @@
}
public void setBorderColor(BorderSide side, XSSFColor color) {
- color.setToBorder(getBorder(side));
+ getBorder(side).setColor(color.getCTColor());
}
private CTBorderPr getBorder(BorderSide side) {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org