You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ug...@apache.org on 2008/01/23 16:53:02 UTC
svn commit: r614571 - in /poi/branches/ooxml/src/ooxml:
java/org/apache/poi/xssf/usermodel/XSSFSheet.java
java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
Author: ugo
Date: Wed Jan 23 07:52:59 2008
New Revision: 614571
URL: http://svn.apache.org/viewvc?rev=614571&view=rev
Log:
Fix implementation of XSSFWorkbook#cloneSheet and provide unit test.
Modified:
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/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
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=614571&r1=614570&r2=614571&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 Wed Jan 23 07:52:59 2008
@@ -86,6 +86,10 @@
hf.setOddFooter("&C&\"Arial\"&10Page &P");
}
+ protected CTSheet getSheet() {
+ return this.sheet;
+ }
+
protected CTWorksheet getWorksheet() {
return this.worksheet;
}
@@ -601,4 +605,9 @@
}
return views.getSheetViewArray(views.getSheetViewArray().length - 1);
}
+
+ protected XSSFSheet cloneSheet() {
+ return new XSSFSheet((CTSheet) sheet.copy());
+ }
+
}
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=614571&r1=614570&r2=614571&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 Wed Jan 23 07:52:59 2008
@@ -79,7 +79,34 @@
}
public Sheet cloneSheet(int sheetNum) {
- // TODO Auto-generated method stub
+ XSSFSheet srcSheet = sheets.get(sheetNum);
+ String srcName = getSheetName(sheetNum);
+ if (srcSheet != null) {
+ XSSFSheet clonedSheet = srcSheet.cloneSheet();
+
+ sheets.add(clonedSheet);
+ CTSheet newcts = this.workbook.getSheets().addNewSheet();
+ newcts.set(clonedSheet.getSheet());
+
+ int i = 1;
+ while (true) {
+ //Try and find the next sheet name that is unique
+ String name = srcName;
+ String index = Integer.toString(i++);
+ if (name.length() + index.length() + 2 < 31) {
+ name = name + "("+index+")";
+ } else {
+ name = name.substring(0, 31 - index.length() - 2) + "(" +index + ")";
+ }
+
+ //If the sheet name is unique, then set it otherwise move on to the next number.
+ if (getSheetIndex(name) == -1) {
+ setSheetName(sheets.size() - 1, name);
+ break;
+ }
+ }
+ return clonedSheet;
+ }
return null;
}
@@ -246,8 +273,7 @@
}
public String getSheetName(int sheet) {
- // TODO Auto-generated method stub
- return null;
+ return this.workbook.getSheets().getSheetArray(sheet).getName();
}
public void insertChartRecord() {
@@ -311,13 +337,11 @@
}
public void setSheetName(int sheet, String name) {
- // TODO Auto-generated method stub
-
+ this.workbook.getSheets().getSheetArray(sheet).setName(name);
}
public void setSheetName(int sheet, String name, short encoding) {
- // TODO Auto-generated method stub
-
+ this.workbook.getSheets().getSheetArray(sheet).setName(name);
}
public void setSheetOrder(String sheetname, int pos) {
Modified: poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java?rev=614571&r1=614570&r2=614571&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java (original)
+++ poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java Wed Jan 23 07:52:59 2008
@@ -70,4 +70,24 @@
workbook.setSelectedTab((short) 1);
assertEquals(1, workbook.getSelectedTab());
}
+
+ public void testSetSheetName() throws Exception {
+ XSSFWorkbook workbook = new XSSFWorkbook();
+ Sheet sheet1 = workbook.createSheet("sheet1");
+ assertEquals("sheet1", workbook.getSheetName(0));
+ workbook.setSheetName(0, "sheet2");
+ assertEquals("sheet2", workbook.getSheetName(0));
+ }
+
+ public void testCloneSheet() throws Exception {
+ XSSFWorkbook workbook = new XSSFWorkbook();
+ Sheet sheet1 = workbook.createSheet("sheet");
+ Sheet sheet2 = workbook.cloneSheet(0);
+ assertEquals(2, workbook.getNumberOfSheets());
+ assertEquals("sheet(1)", workbook.getSheetName(1));
+ workbook.setSheetName(1, "clonedsheet");
+ Sheet sheet3 = workbook.cloneSheet(1);
+ assertEquals(3, workbook.getNumberOfSheets());
+ assertEquals("clonedsheet(1)", workbook.getSheetName(2));
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org