<packageset dir="${contrib.src}" defaultexcludes="yes">
<include name="org/apache/poi/**"/>
</packageset>
- <packageset dir="${examples.src}" defaultexcludes="yes">
+ <packageset dir="${ooxml.src}" defaultexcludes="yes">
<include name="org/apache/poi/**"/>
</packageset>
+++ /dev/null
-/* ====================================================================
- 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.ss.usermodel.examples;
-
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.Date;
-
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.CellStyle;
-import org.apache.poi.ss.usermodel.CreationHelper;
-import org.apache.poi.ss.usermodel.DateUtil;
-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.ss.usermodel.WorkbookFactory;
-import org.apache.poi.ss.util.CellReference;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-
-/**
- * Various things from the quick guide documentation
- */
-public class FromQuickGuide {
- public static void newWorkbook() throws IOException {
- boolean doHSSF = true;
- boolean doXSSF = true;
-
- if(doHSSF) {
- Workbook wb = new HSSFWorkbook();
- FileOutputStream fileOut = new FileOutputStream("workbook.xls");
- wb.write(fileOut);
- fileOut.close();
- }
- if(doXSSF) {
- Workbook wb = new XSSFWorkbook();
- FileOutputStream fileOut = new FileOutputStream("workbook.xlsx");
- wb.write(fileOut);
- fileOut.close();
- }
- }
-
- public static void newSheet() throws IOException {
- Workbook[] wbs = new Workbook[] {
- new HSSFWorkbook(), new XSSFWorkbook()
- };
-
- for (int i = 0; i < wbs.length; i++) {
- Workbook wb = wbs[i];
- Sheet sheet1 = wb.createSheet("new sheet");
- Sheet sheet2 = wb.createSheet("second sheet");
- FileOutputStream fileOut = new FileOutputStream("workbook.xls");
- wb.write(fileOut);
- fileOut.close();
- }
- }
-
- public static void newCells() throws IOException {
- Workbook[] wbs = new Workbook[] {
- new HSSFWorkbook(), new XSSFWorkbook()
- };
-
- for (int i = 0; i < wbs.length; i++) {
- Workbook wb = wbs[i];
- CreationHelper createHelper = 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);
-
- // Or do it on one line.
- row.createCell((short)1).setCellValue(1.2);
- row.createCell((short)2).setCellValue(
- createHelper.createRichTextString("This is a string"));
- row.createCell((short)3).setCellValue(true);
-
- // Write the output to a file
- FileOutputStream fileOut = new FileOutputStream("workbook.xls");
- wb.write(fileOut);
- fileOut.close();
- }
- }
-
- public static void newDateCells() throws IOException {
- Workbook wb = new HSSFWorkbook();
- //Workbook wb = new XSSFWorkbook();
- CreationHelper createHelper = 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 date value in it. The first cell is not styled
- // as a date.
- Cell cell = row.createCell((short)0);
- cell.setCellValue(new Date());
-
- // we style the second cell as a date (and time). It is important to
- // create a new cell style from the workbook otherwise you can end up
- // modifying the built in style and effecting not only this cell but other cells.
- CellStyle cellStyle = wb.createCellStyle();
- cellStyle.setDataFormat(createHelper.createDataFormat().getFormat("m/d/yy h:mm"));
- cell = row.createCell((short)1);
- cell.setCellValue(new Date());
- cell.setCellStyle(cellStyle);
-
- // Write the output to a file
- FileOutputStream fileOut = new FileOutputStream("workbook.xls");
- wb.write(fileOut);
- fileOut.close();
- }
-
- public static void iterating() {
- Workbook wb = new HSSFWorkbook();
- Sheet sheet = wb.createSheet("new sheet");
-
- for (Row row : sheet) {
- for (Cell cell : row) {
- // Do something here
- System.out.println(cell.getCellType());
- }
- }
- }
-
- public static void getCellContents(Sheet sheet) {
- for (Row row : sheet) {
- for (Cell cell : row) {
- CellReference cellRef = new CellReference(row.getRowNum(), cell.getColumnIndex());
- System.out.print(cellRef.formatAsString());
- System.out.print(" - ");
-
- switch(cell.getCellType()) {
- case Cell.CELL_TYPE_STRING:
- System.out.println(cell.getRichStringCellValue().getString());
- break;
- case Cell.CELL_TYPE_NUMERIC:
- if(DateUtil.isCellDateFormatted(cell)) {
- System.out.println(cell.getDateCellValue());
- } else {
- System.out.println(cell.getNumericCellValue());
- }
- break;
- case Cell.CELL_TYPE_BOOLEAN:
- System.out.println(cell.getBooleanCellValue());
- break;
- case Cell.CELL_TYPE_FORMULA:
- System.out.println(cell.getCellFormula());
- break;
- default:
- System.out.println();
- }
- }
- }
- }
-
- public static void main(String[] args) throws Exception {
- Workbook wb = WorkbookFactory.create(new FileInputStream("src/testcases/org/apache/poi/hssf/data/WithMoreVariousData.xlsx"));
- getCellContents(wb.getSheetAt(0));
- }
-}
public class AligningCells {\r
\r
public static void main(String[] args) throws Exception {\r
- Workbook wb = new XSSFWorkbook();\r
+ Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();\r
\r
Sheet sheet = wb.createSheet();\r
Row row = sheet.createRow((short) 2);\r
/**\r
* cell styles used for formatting calendar sheets\r
*/\r
- public static Map<String, XSSFCellStyle> createStyles(XSSFWorkbook wb){\r
+ private static Map<String, XSSFCellStyle> createStyles(XSSFWorkbook wb){\r
Map<String, XSSFCellStyle> styles = new HashMap<String, XSSFCellStyle>();\r
\r
XSSFCellStyle style;\r
public static void main(String[]args) throws Exception {
- Workbook wb = new XSSFWorkbook();
+ Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();
CreationHelper creationHelper = wb.getCreationHelper();
Sheet sheet = wb.createSheet("new sheet");
public static void main(String[]args) throws Exception {
- Workbook wb = new XSSFWorkbook();
+ Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();
Sheet sheet = wb.createSheet("format sheet");
CellStyle style;
DataFormat format = wb.createDataFormat();
*/
public class FillsAndColors {
public static void main(String[] args) throws Exception {
- Workbook wb = new XSSFWorkbook();
+ Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();
Sheet sheet = wb.createSheet("new sheet");
// Create a row and put some cells in it. Rows are 0 based.
public static void main(String[]args) throws Exception {
- Workbook wb = new XSSFWorkbook();
+ Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();
Sheet sheet = wb.createSheet("format sheet");
PrintSetup ps = sheet.getPrintSetup();
public static void main(String[]args) throws Exception {
- Workbook wb = new XSSFWorkbook();
+ Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();
Sheet sheet = wb.createSheet("first-header - format sheet");
sheet.createRow(0).createCell(0).setCellValue(123);
public static void main(String[]args) throws Exception{
- Workbook wb = new XSSFWorkbook();
+ Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();
CreationHelper createHelper = wb.getCreationHelper();
//cell style for hyperlinks
/**\r
* cell styles used for formatting calendar sheets\r
*/\r
- public static Map<String, XSSFCellStyle> createStyles(XSSFWorkbook wb){\r
+ private static Map<String, XSSFCellStyle> createStyles(XSSFWorkbook wb){\r
Map<String, XSSFCellStyle> styles = new HashMap<String, XSSFCellStyle>();\r
\r
XSSFCellStyle style;\r
*/\r
public class MergingCells {\r
public static void main(String[] args) throws Exception {\r
- Workbook wb = new XSSFWorkbook();\r
+ Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();\r
Sheet sheet = wb.createSheet("new sheet");\r
\r
Row row = sheet.createRow((short) 1);\r
public class NewLinesInCells {
public static void main(String[]args) throws Exception {
- Workbook wb = new XSSFWorkbook();
+ Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();
Sheet sheet = wb.createSheet();
Row row = sheet.createRow(2);
public class SelectedSheet {
public static void main(String[]args) throws Exception {
- Workbook wb = new XSSFWorkbook();
+ Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();
Sheet sheet = wb.createSheet("row sheet");
Sheet sheet2 = wb.createSheet("another sheet");
public class ShiftRows {
public static void main(String[]args) throws Exception {
- Workbook wb = new XSSFWorkbook();
+ Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();
Sheet sheet = wb.createSheet("Sheet1");
Row row1 = sheet.createRow(1);
out.close();\r
}\r
\r
- public static Map<String, XSSFCellStyle> createStyles(XSSFWorkbook wb){\r
+ private static Map<String, XSSFCellStyle> createStyles(XSSFWorkbook wb){\r
Map<String, XSSFCellStyle> styles = new HashMap<String, XSSFCellStyle>();\r
XSSFCellStyle style;\r
XSSFFont titleFont = wb.createFont();\r
*/\r
public class WorkingWithBorders {\r
public static void main(String[] args) throws Exception {\r
- Workbook wb = new XSSFWorkbook();\r
+ Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();\r
Sheet sheet = wb.createSheet("borders");\r
\r
// Create a row and put some cells in it. Rows are 0 based.\r
*/\r
public class WorkingWithFonts {\r
public static void main(String[] args) throws Exception {\r
- Workbook wb = new XSSFWorkbook();\r
+ Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();\r
Sheet sheet = wb.createSheet("Fonts");\r
\r
Font font0 = wb.createFont();\r
public class WorkingWithPageSetup {
public static void main(String[]args) throws Exception {
- Workbook wb = new XSSFWorkbook();
+ Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();
/**
* It's possible to set up repeating rows and columns in your printouts by using the setRepeatingRowsAndColumns() function in the Workbook object.
public static void main(String[] args) throws IOException {\r
\r
//create a new workbook\r
- XSSFWorkbook wb = new XSSFWorkbook();\r
+ XSSFWorkbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();\r
\r
//add a picture in this workbook.\r
InputStream is = new FileInputStream("lilies.jpg");\r
package org.apache.poi.xssf.usermodel.examples;\r
\r
import org.apache.poi.xssf.usermodel.*;\r
-import org.apache.poi.ss.usermodel.*;\r
\r
import java.io.FileOutputStream;\r
\r
public class WorkingWithRichText {\r
\r
public static void main(String[] args) throws Exception {\r
- \r
- XSSFWorkbook wb = new XSSFWorkbook();\r
+\r
+ XSSFWorkbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();\r
\r
XSSFSheet sheet = wb.createSheet();\r
XSSFRow row = sheet.createRow((short) 2);\r
\r
XSSFCell cell = row.createCell(1);\r
- XSSFRichTextString rt = new XSSFRichTextString("The quick");\r
+ XSSFRichTextString rt = new XSSFRichTextString("The quick brown fox");\r
\r
XSSFFont font1 = wb.createFont();\r
font1.setBold(true);\r
- rt.append(" brown fox", font1);\r
+ font1.setColor(new XSSFColor(new java.awt.Color(255, 0, 0)));\r
+ rt.applyFont(0, 10, font1);\r
\r
XSSFFont font2 = wb.createFont();\r
font2.setItalic(true);\r
- font2.setColor(IndexedColors.RED.getIndex());\r
- rt.applyFont((short) 0);\r
+ font2.setUnderline(XSSFFont.U_DOUBLE);\r
+ font2.setColor(new XSSFColor(new java.awt.Color(0, 255, 0)));\r
+ rt.applyFont(10, 19, font2);\r
+\r
+ XSSFFont font3 = wb.createFont();\r
+ font3.setColor(new XSSFColor(new java.awt.Color(0, 0, 255)));\r
+ rt.append(" Jumped over the lazy dog", font3);\r
+\r
cell.setCellValue(rt);\r
\r
// Write the output to a file\r
FileOutputStream fileOut = new FileOutputStream("xssf-richtext.xlsx");\r
wb.write(fileOut);\r
fileOut.close();\r
-\r
}\r
\r
}\r
* Creates a new XSSFRichTextString for you.
*/
public XSSFRichTextString createRichTextString(String text) {
- return new XSSFRichTextString(text);
+ XSSFRichTextString rt =new XSSFRichTextString(text);
+ rt.setStylesTableReference(workbook.getStylesSource());
+ return rt;
}
public XSSFDataFormat createDataFormat() {
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
//when setStylesTableReference is called
font = new XSSFFont();
font.setFontName("#" + fontIndex);
- fontIdRuns = new ArrayList<CTRPrElt>();
} else {
font = styles.getFontAt(fontIndex);
}
XSSFFont xssfFont = (XSSFFont)font;
ArrayList<CTRElt> runs = new ArrayList<CTRElt>();
+ CTRElt[] r = st.getRArray();
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);
+ for (int i = 0; i < r.length; i++) {
+ int rStart = pos;
+ String t = r[i].getT();
+ int rEnd = rStart + t.length();
+
+ if(rEnd <= startIndex) {
+ runs.add(r[i]);
+ pos += r[i].getT().length();
+ }
+ else if (startIndex > rStart && startIndex < rEnd){
+ CTRElt c = (CTRElt)r[i].copy();
+ String txt = text.substring(rStart, startIndex);
+ c.setT(txt);
+ runs.add(c);
+ pos += txt.length();
} else {
break;
}
- pos = p2;
}
- CTRElt r = CTRElt.Factory.newInstance();
- r.setT(text.substring(startIndex, endIndex));
- CTRPrElt pr = r.addNewRPr();
+ CTRElt rt = CTRElt.Factory.newInstance();
+ String txt = text.substring(startIndex, endIndex);
+ rt.setT(txt);
+ CTRPrElt pr = rt.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);
+ runs.add(rt);
+ pos += txt.length();
+
+ for (int i = 0; i < r.length; i++) {
+ int rStart = pos;
+ String t = r[i].getT();
+ int rEnd = Math.min(rStart + t.length(), text.length());
+
+ if (endIndex < rEnd){
+ CTRElt c = (CTRElt)r[i].copy();
+ txt = text.substring(rStart, rEnd);
+ c.setT(txt);
+ runs.add(c);
+ pos += txt.length();
}
- pos = p2;
}
+
st.setRArray(runs.toArray(new CTRElt[runs.size()]));
}
setRunAttributes(((XSSFFont)font).getCTFont(), r.addNewRPr());
st.setRArray(new CTRElt[]{r});
}
-
- if(fontIdRuns != null) fontIdRuns.add(st.getRArray(0).getRPr());
-
}
/**
if(styles == null) {
font = new XSSFFont();
font.setFontName("#" + fontIndex);
- fontIdRuns = new ArrayList<CTRPrElt>();
} else {
font = styles.getFontAt(fontIndex);
}
lt.setT(text);
CTRPrElt pr = lt.addNewRPr();
if(font != null) setRunAttributes(font.getCTFont(), pr);
-
- if(fontIdRuns != null) fontIdRuns.add(pr);
}
/**
protected void setStylesTableReference(StylesTable tbl){
styles = tbl;
- if(fontIdRuns != null){
- for (CTRPrElt pr : fontIdRuns) {
- if(pr.sizeOfRFontArray() > 0 ) {
+ if(st.sizeOfRArray() > 0) {
+ for (CTRElt r : st.getRArray()) {
+ CTRPrElt pr = r.getRPr();
+ if(pr != null){
String fontName = pr.getRFontArray(0).getVal();
if(fontName.startsWith("#")){
int idx = Integer.parseInt(fontName.substring(1));
pane.setTopLeftCell(new CellReference(0, topRow).formatAsString());
pane.setActivePane(STPane.TOP_RIGHT);
} else if (colSplit == 0) {
- pane.setTopLeftCell(new CellReference(leftmostColumn, 64).formatAsString());
+ pane.setTopLeftCell(new CellReference(rowSplit, 0).formatAsString());
pane.setActivePane(STPane.BOTTOM_LEFT);
} else {
pane.setTopLeftCell(new CellReference(leftmostColumn, topRow).formatAsString());
// Create a new workbook\r
XSSFWorkbook wb = new XSSFWorkbook();\r
\r
-\r
- // Create a worksheet 'sheet1' in the new workbook\r
XSSFName name1 = wb.createName();\r
name1.setNameName("testOne");\r
\r
+ //setting a duplicate name should throw IllegalArgumentException\r
XSSFName name2 = wb.createName();\r
try {\r
name2.setNameName("testOne");\r
\r
rt.applyFont(2, 5, font1);\r
\r
- assertEquals(4, rt.numFormattingRuns());\r
+ assertEquals(5, rt.numFormattingRuns());\r
assertEquals(0, rt.getIndexOfFormattingRun(0));\r
assertEquals(2, rt.getLengthOfFormattingRun(0));\r
\r
assertEquals(3, rt.getLengthOfFormattingRun(1));\r
\r
assertEquals(5, rt.getIndexOfFormattingRun(2));\r
- assertEquals(2, rt.getLengthOfFormattingRun(2));\r
+ assertEquals(3, rt.getLengthOfFormattingRun(2));\r
\r
- assertEquals(7, rt.getIndexOfFormattingRun(3));\r
- assertEquals(2, rt.getLengthOfFormattingRun(3));\r
+ assertEquals(8, rt.getIndexOfFormattingRun(3));\r
+ assertEquals(1, rt.getLengthOfFormattingRun(3));\r
}\r
\r
public void testClearFormatting() throws Exception {\r