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