From: Yegor Kozlov Date: Thu, 6 Nov 2008 10:49:51 +0000 (+0000) Subject: 1. included ooxml javadocs in build.xml2. added a new rich example: BusinessPlan... X-Git-Tag: ooxml_20081107~3 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=886e06cb2ac60fd9ecd45b43e3796dda2951b707;p=poi.git 1. included ooxml javadocs in build.xml2. added a new rich example: BusinessPlan.java3. misc bug fixes git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@711839 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/build.xml b/build.xml index 310585ca30..f58a4b19e7 100644 --- a/build.xml +++ b/build.xml @@ -1000,7 +1000,7 @@ FORREST_HOME environment variable! - + diff --git a/src/examples/src/org/apache/poi/ss/usermodel/examples/FromQuickGuide.java b/src/examples/src/org/apache/poi/ss/usermodel/examples/FromQuickGuide.java deleted file mode 100644 index d438facc1e..0000000000 --- a/src/examples/src/org/apache/poi/ss/usermodel/examples/FromQuickGuide.java +++ /dev/null @@ -1,178 +0,0 @@ -/* ==================================================================== - 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)); - } -} diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/AligningCells.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/AligningCells.java index a896a6bcce..066a07f4d1 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/AligningCells.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/AligningCells.java @@ -28,7 +28,7 @@ import java.io.FileOutputStream; public class AligningCells { 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((short) 2); diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/CalendarDemo.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/CalendarDemo.java index 298b63f533..52dcaed517 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/CalendarDemo.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/CalendarDemo.java @@ -128,7 +128,7 @@ public class CalendarDemo { /** * cell styles used for formatting calendar sheets */ - public static Map createStyles(XSSFWorkbook wb){ + private static Map createStyles(XSSFWorkbook wb){ Map styles = new HashMap(); XSSFCellStyle style; diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateCell.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateCell.java index 1a79b6ae0b..09fce61d7f 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateCell.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateCell.java @@ -31,7 +31,7 @@ public class CreateCell { 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"); diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateUserDefinedDataFormats.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateUserDefinedDataFormats.java index 9905a9af31..2c37ea08d2 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateUserDefinedDataFormats.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateUserDefinedDataFormats.java @@ -34,7 +34,7 @@ public class CreateUserDefinedDataFormats { 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(); diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/FillsAndColors.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/FillsAndColors.java index 5c5b623b8e..019e14d1ce 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/FillsAndColors.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/FillsAndColors.java @@ -28,7 +28,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; */ 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. diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/FitSheetToOnePage.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/FitSheetToOnePage.java index e7fb42b4b2..a781688c39 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/FitSheetToOnePage.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/FitSheetToOnePage.java @@ -27,7 +27,7 @@ public class FitSheetToOnePage { 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(); diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/HeadersAndFooters.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/HeadersAndFooters.java index 3726c5819c..8b95fe63c2 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/HeadersAndFooters.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/HeadersAndFooters.java @@ -29,7 +29,7 @@ public class HeadersAndFooters { 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); diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/HyperlinkExample.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/HyperlinkExample.java index 4e4c4c6477..dd30fcc232 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/HyperlinkExample.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/HyperlinkExample.java @@ -29,7 +29,7 @@ public class HyperlinkExample { 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 diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/LoanCalculator.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/LoanCalculator.java index 7d3f9d80eb..187ab579cd 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/LoanCalculator.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/LoanCalculator.java @@ -138,7 +138,7 @@ public class LoanCalculator { /** * cell styles used for formatting calendar sheets */ - public static Map createStyles(XSSFWorkbook wb){ + private static Map createStyles(XSSFWorkbook wb){ Map styles = new HashMap(); XSSFCellStyle style; diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/MergingCells.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/MergingCells.java index 853fef1765..430fc45a41 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/MergingCells.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/MergingCells.java @@ -32,7 +32,7 @@ import java.io.FileOutputStream; */ public class MergingCells { 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"); Row row = sheet.createRow((short) 1); diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/NewLinesInCells.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/NewLinesInCells.java index 07045df568..5626e7a7ca 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/NewLinesInCells.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/NewLinesInCells.java @@ -31,7 +31,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; 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); diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/SelectedSheet.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/SelectedSheet.java index f79c4163da..933e470d5f 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/SelectedSheet.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/SelectedSheet.java @@ -26,7 +26,7 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook; 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"); diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/ShiftRows.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/ShiftRows.java index 09ae38690b..ec4bb21398 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/ShiftRows.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/ShiftRows.java @@ -30,7 +30,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; 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); diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/TimesheetDemo.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/TimesheetDemo.java index 45580fffc6..9c28e33aff 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/TimesheetDemo.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/TimesheetDemo.java @@ -149,7 +149,7 @@ public class TimesheetDemo { out.close(); } - public static Map createStyles(XSSFWorkbook wb){ + private static Map createStyles(XSSFWorkbook wb){ Map styles = new HashMap(); XSSFCellStyle style; XSSFFont titleFont = wb.createFont(); diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithBorders.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithBorders.java index 825febde75..c45cb392c5 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithBorders.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithBorders.java @@ -27,7 +27,7 @@ import java.io.FileOutputStream; */ public class WorkingWithBorders { public static void main(String[] args) throws Exception { - Workbook wb = new XSSFWorkbook(); + Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook(); Sheet sheet = wb.createSheet("borders"); // Create a row and put some cells in it. Rows are 0 based. diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithFonts.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithFonts.java index c5d814b438..dc903fba26 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithFonts.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithFonts.java @@ -27,7 +27,7 @@ import java.io.FileOutputStream; */ public class WorkingWithFonts { public static void main(String[] args) throws Exception { - Workbook wb = new XSSFWorkbook(); + Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook(); Sheet sheet = wb.createSheet("Fonts"); Font font0 = wb.createFont(); diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithPageSetup.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithPageSetup.java index 137379e574..d1be7af174 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithPageSetup.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithPageSetup.java @@ -29,7 +29,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; 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. diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithPictures.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithPictures.java index b4c018d9ac..679a77cdac 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithPictures.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithPictures.java @@ -32,7 +32,7 @@ public class WorkingWithPictures { public static void main(String[] args) throws IOException { //create a new workbook - XSSFWorkbook wb = new XSSFWorkbook(); + XSSFWorkbook wb = new XSSFWorkbook(); //or new HSSFWorkbook(); //add a picture in this workbook. InputStream is = new FileInputStream("lilies.jpg"); diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithRichText.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithRichText.java index 6070caa135..134c01f195 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithRichText.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithRichText.java @@ -17,7 +17,6 @@ package org.apache.poi.xssf.usermodel.examples; import org.apache.poi.xssf.usermodel.*; -import org.apache.poi.ss.usermodel.*; import java.io.FileOutputStream; @@ -27,30 +26,36 @@ import java.io.FileOutputStream; public class WorkingWithRichText { public static void main(String[] args) throws Exception { - - XSSFWorkbook wb = new XSSFWorkbook(); + + XSSFWorkbook wb = new XSSFWorkbook(); //or new HSSFWorkbook(); XSSFSheet sheet = wb.createSheet(); XSSFRow row = sheet.createRow((short) 2); XSSFCell cell = row.createCell(1); - XSSFRichTextString rt = new XSSFRichTextString("The quick"); + XSSFRichTextString rt = new XSSFRichTextString("The quick brown fox"); XSSFFont font1 = wb.createFont(); font1.setBold(true); - rt.append(" brown fox", font1); + font1.setColor(new XSSFColor(new java.awt.Color(255, 0, 0))); + rt.applyFont(0, 10, font1); XSSFFont font2 = wb.createFont(); font2.setItalic(true); - font2.setColor(IndexedColors.RED.getIndex()); - rt.applyFont((short) 0); + font2.setUnderline(XSSFFont.U_DOUBLE); + font2.setColor(new XSSFColor(new java.awt.Color(0, 255, 0))); + rt.applyFont(10, 19, font2); + + XSSFFont font3 = wb.createFont(); + font3.setColor(new XSSFColor(new java.awt.Color(0, 0, 255))); + rt.append(" Jumped over the lazy dog", font3); + cell.setCellValue(rt); // Write the output to a file FileOutputStream fileOut = new FileOutputStream("xssf-richtext.xlsx"); wb.write(fileOut); fileOut.close(); - } } diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCreationHelper.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCreationHelper.java index a0bc00d5ab..4c698cc010 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCreationHelper.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCreationHelper.java @@ -31,7 +31,9 @@ public class XSSFCreationHelper implements CreationHelper { * 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() { diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java index 71529e9f46..54d5938f48 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java @@ -68,7 +68,6 @@ import java.util.ArrayList; public class XSSFRichTextString implements RichTextString { private CTRst st; private StylesTable styles; - private ArrayList fontIdRuns; /** * Create a rich text string and initialize it with empty string @@ -106,7 +105,6 @@ public class XSSFRichTextString implements RichTextString { //when setStylesTableReference is called font = new XSSFFont(); font.setFontName("#" + fontIndex); - fontIdRuns = new ArrayList(); } else { font = styles.getFontAt(fontIndex); } @@ -139,50 +137,50 @@ public class XSSFRichTextString implements RichTextString { XSSFFont xssfFont = (XSSFFont)font; ArrayList runs = new ArrayList(); + 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()])); } @@ -202,9 +200,6 @@ public class XSSFRichTextString implements RichTextString { setRunAttributes(((XSSFFont)font).getCTFont(), r.addNewRPr()); st.setRArray(new CTRElt[]{r}); } - - if(fontIdRuns != null) fontIdRuns.add(st.getRArray(0).getRPr()); - } /** @@ -217,7 +212,6 @@ public class XSSFRichTextString implements RichTextString { if(styles == null) { font = new XSSFFont(); font.setFontName("#" + fontIndex); - fontIdRuns = new ArrayList(); } else { font = styles.getFontAt(fontIndex); } @@ -240,8 +234,6 @@ public class XSSFRichTextString implements RichTextString { lt.setT(text); CTRPrElt pr = lt.addNewRPr(); if(font != null) setRunAttributes(font.getCTFont(), pr); - - if(fontIdRuns != null) fontIdRuns.add(pr); } /** @@ -419,9 +411,10 @@ public class XSSFRichTextString implements RichTextString { 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)); diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java index 13c1ffce53..c72241a729 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -332,7 +332,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { 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()); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFName.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFName.java index e5267688a2..9a9f0849f3 100755 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFName.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFName.java @@ -28,11 +28,10 @@ public class TestXSSFName extends TestCase { // Create a new workbook XSSFWorkbook wb = new XSSFWorkbook(); - - // Create a worksheet 'sheet1' in the new workbook XSSFName name1 = wb.createName(); name1.setNameName("testOne"); + //setting a duplicate name should throw IllegalArgumentException XSSFName name2 = wb.createName(); try { name2.setNameName("testOne"); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java index b1e8f74e4f..475a1ce096 100755 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java @@ -71,7 +71,7 @@ public class TestXSSFRichTextString extends TestCase { rt.applyFont(2, 5, font1); - assertEquals(4, rt.numFormattingRuns()); + assertEquals(5, rt.numFormattingRuns()); assertEquals(0, rt.getIndexOfFormattingRun(0)); assertEquals(2, rt.getLengthOfFormattingRun(0)); @@ -79,10 +79,10 @@ public class TestXSSFRichTextString extends TestCase { assertEquals(3, rt.getLengthOfFormattingRun(1)); assertEquals(5, rt.getIndexOfFormattingRun(2)); - assertEquals(2, rt.getLengthOfFormattingRun(2)); + assertEquals(3, rt.getLengthOfFormattingRun(2)); - assertEquals(7, rt.getIndexOfFormattingRun(3)); - assertEquals(2, rt.getLengthOfFormattingRun(3)); + assertEquals(8, rt.getIndexOfFormattingRun(3)); + assertEquals(1, rt.getLengthOfFormattingRun(3)); } public void testClearFormatting() throws Exception {