]> source.dussan.org Git - poi.git/commitdiff
Applied patch 45899 - XSSFWorkbook getActiveSheetIndex / setActiveSheet
authorJosh Micich <josh@apache.org>
Mon, 29 Sep 2008 04:50:20 +0000 (04:50 +0000)
committerJosh Micich <josh@apache.org>
Mon, 29 Sep 2008 04:50:20 +0000 (04:50 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@699989 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/interfaces-jdk14/org/apache/poi/ss/usermodel/Workbook.java
src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Workbook.java
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java

index eca702a379ed264cc16a754ac0ca6b7a0f88de1c..c4cdd215323daaa76e859c394af1771c58b10a4e 100644 (file)
@@ -26,6 +26,13 @@ import org.apache.poi.hssf.usermodel.*;
  *  which work properly for both HSSFWorkbook and XSSFWorkbook
  */
 public interface Workbook {
+
+    int getActiveSheetIndex();
+    void setActiveSheet(int sheetIndex);
+
+    int getFirstVisibleTab();
+    void setFirstVisibleTab(int sheetIndex);
+
     int getNumberOfSheets();
     short getNumberOfFonts();
     int getNumberOfNames();
@@ -34,15 +41,11 @@ public interface Workbook {
     HSSFName getNameAt(int index);
     int getNameIndex(String name);
     String getNameName(int index);
-    String resolveNameXText(int refIndex, int definedNameIndex);
 
     String getSheetName(int sheet);
     HSSFSheet getSheetAt(int index);
-    String findSheetNameFromExternSheet(int externSheetIndex);
     int getSheetIndex(String name);
     int getSheetIndex(Sheet sheet);
-    int getSheetIndexFromExternSheetIndex(int externSheetNumber);
-       int getExternalSheetIndex(int internalSheetIndex);
 
     CreationHelper getCreationHelper();
 
index f1a990865871baaaa52c371de1c68885e93d46a0..f4defbae65347aebcbbaba20fe0b4884ebd3f855 100644 (file)
@@ -49,9 +49,15 @@ public interface Workbook {
     /** PNG format */
     public static final int PICTURE_TYPE_PNG = 6;
 
-    /** Device independant bitmap */
+    /** Device independent bitmap */
     public static final int PICTURE_TYPE_DIB = 7;
 
+    int getActiveSheetIndex();
+    void setActiveSheet(int sheetIndex);
+
+    int getFirstVisibleTab();
+    void setFirstVisibleTab(int sheetIndex);
+
     /**
      * sets the order of appearance for a given sheet.
      *
@@ -80,19 +86,6 @@ public interface Workbook {
      */
     short getSelectedTab();
 
-    /**
-     * sets the first tab that is displayed in the list of tabs
-     * in excel.
-     * @param index
-     */
-    void setDisplayedTab(short index);
-
-    /**
-     * sets the first tab that is displayed in the list of tabs
-     * in excel.
-     */
-    short getDisplayedTab();
-
     /**
      * set the sheet name.
      * Will throw IllegalArgumentException if the name is greater than 31 chars
index 62743c6183bed59a0539d550a2f0b43486a3dfc8..141bda29283a7c119c6c94787278390a247f1be3 100644 (file)
@@ -27,10 +27,8 @@ import java.util.List;
 import javax.xml.namespace.QName;
 
 import org.apache.poi.POIXMLDocument;
-import org.apache.poi.ss.usermodel.CellStyle;
 import org.apache.poi.ss.usermodel.CommentsSource;
 import org.apache.poi.ss.usermodel.CreationHelper;
-import org.apache.poi.ss.usermodel.DataFormat;
 import org.apache.poi.ss.usermodel.Palette;
 import org.apache.poi.ss.usermodel.PictureData;
 import org.apache.poi.ss.usermodel.Row;
@@ -337,6 +335,18 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook {
        return null;
     }
 
+    /**
+     * Convenience method to get the active sheet.  The active sheet is is the sheet
+     * which is currently displayed when the workbook is viewed in Excel.
+     * 'Selected' sheet(s) is a distinct concept.
+     */
+    public int getActiveSheetIndex() {
+        //activeTab (Active Sheet Index) Specifies an unsignedInt 
+        //that contains the index to the active sheet in this book view.
+        Long index = workbook.getBookViews().getWorkbookViewArray(0).getActiveTab();
+        return index.intValue();
+    }
+
     public List getAllEmbeddedObjects() {
         // TODO Auto-generated method stub
         return null;
@@ -518,6 +528,29 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook {
                this.missingCellPolicy = missingCellPolicy;
        }
 
+    /**
+     * Convenience method to set the active sheet.  The active sheet is is the sheet
+     * which is currently displayed when the workbook is viewed in Excel.
+     * 'Selected' sheet(s) is a distinct concept.
+     */
+    public void setActiveSheet(int index) {
+
+        validateSheetIndex(index);
+        //activeTab (Active Sheet Index) Specifies an unsignedInt that contains the index to the active sheet in this book view.
+        CTBookView[] arrayBook = workbook.getBookViews().getWorkbookViewArray();
+        for (int i = 0; i < arrayBook.length; i++) {
+            workbook.getBookViews().getWorkbookViewArray(i).setActiveTab(index);
+        }
+    }
+
+    private void validateSheetIndex(int index) {
+        int lastSheetIx = sheets.size() - 1;
+        if (index < 0 || index > lastSheetIx) {
+            throw new IllegalArgumentException("Sheet index ("
+                    + index +") is out of range (0.." +    lastSheetIx + ")");
+        }
+    }
+
     public void setBackupFlag(boolean backupValue) {
         // TODO Auto-generated method stub
 
@@ -539,34 +572,12 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook {
      *
      * @param index integer that contains the index to the active sheet in this book view.
      */
-    public void setFirstVisibleTab(short index) {
+    public void setFirstVisibleTab(int index) {
         CTBookViews bookViews = workbook.getBookViews();
         CTBookView bookView= bookViews.getWorkbookViewArray(0);
         bookView.setActiveTab(index);
     }
 
-    /**
-     * Gets the first tab that is displayed in the list of tabs
-     * in excel.
-     * @return an integer that contains the index to the active sheet in this book view.
-     *
-     * @deprecated Aug 2008 - Misleading name - use #getFirstVisibleTab()
-     */
-    public short getDisplayedTab() {
-        return (short) getFirstVisibleTab();
-    }
-
-    /**
-     * sets the first tab that is displayed in the list of tabs
-     * in excel.
-     * @param index integer that contains the index to the active sheet in this book view.
-     *
-     * @deprecated Aug 2008 - Misleading name - use #setFirstVisibleTab()
-     */
-    public void setDisplayedTab(short index) {
-        setFirstVisibleTab(index);
-    }
-
     public void setPrintArea(int sheetIndex, String reference) {
         // TODO Auto-generated method stub
 
index 38769743c1dccab25554f1f545ba3572b23aaf0e..4bfaf3ac2a44a47c9a55a75bc056d260383230e7 100644 (file)
@@ -43,7 +43,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook;
 public final class TestXSSFWorkbook extends TestCase {
 
        @Override
-       protected void setUp() throws Exception {
+       protected void setUp() {
                // Use system out logger
                System.setProperty(
                                "org.apache.poi.util.POILogger",
@@ -51,6 +51,17 @@ public final class TestXSSFWorkbook extends TestCase {
                );
        }
 
+       public void testGetSetActiveSheet(){
+               XSSFWorkbook workbook = new XSSFWorkbook();
+               workbook.createSheet("sheet1");
+               workbook.createSheet("sheet2");
+               workbook.createSheet("sheet3");
+               // set second sheet
+               workbook.setActiveSheet(1);
+               // test if second sheet is set up
+               assertEquals(1, workbook.getActiveSheetIndex());
+       }
+
        public void testGetSheetIndex() {
                XSSFWorkbook workbook = new XSSFWorkbook();
                Sheet sheet1 = workbook.createSheet("sheet1");