You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ni...@apache.org on 2008/06/16 15:20:43 UTC

svn commit: r668153 - in /poi/trunk/src: java/org/apache/poi/hssf/model/ java/org/apache/poi/hssf/record/formula/ java/org/apache/poi/hssf/usermodel/ testcases/org/apache/poi/hssf/data/ testcases/org/apache/poi/hssf/usermodel/

Author: nick
Date: Mon Jun 16 06:20:42 2008
New Revision: 668153

URL: http://svn.apache.org/viewvc?rev=668153&view=rev
Log:
Slight tweak for named ranges pointing at deleted sheets, related to bug #30978

Added:
    poi/trunk/src/testcases/org/apache/poi/hssf/data/30978-deleted.xls   (with props)
Modified:
    poi/trunk/src/java/org/apache/poi/hssf/model/Workbook.java
    poi/trunk/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFName.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java

Modified: poi/trunk/src/java/org/apache/poi/hssf/model/Workbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/model/Workbook.java?rev=668153&r1=668152&r2=668153&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/model/Workbook.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/model/Workbook.java Mon Jun 16 06:20:42 2008
@@ -603,6 +603,9 @@
             boundsheets.remove(sheetnum);
             fixTabIdRecord();
         }
+        
+        // If we decide that we need to fix up
+        //  NameRecords, do it here
     }
 
     /**

Modified: poi/trunk/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java?rev=668153&r1=668152&r2=668153&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java Mon Jun 16 06:20:42 2008
@@ -269,8 +269,15 @@
 		StringBuffer retval = new StringBuffer();
 		String sheetName = Ref3DPtg.getSheetName(book, field_1_index_extern_sheet);
 		if(sheetName != null) {
-			SheetNameFormatter.appendFormat(retval, sheetName);
-			retval.append( '!' );
+			if(sheetName.length() == 0) {
+				// What excel does if sheet has been deleted
+				sheetName = "#REF";
+				retval.append(sheetName);
+			} else {
+				// Normal
+				SheetNameFormatter.appendFormat(retval, sheetName);
+				retval.append( '!' );
+			}
 		}
 		
 		// Now the normal area bit

Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFName.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFName.java?rev=668153&r1=668152&r2=668153&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFName.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFName.java Mon Jun 16 06:20:42 2008
@@ -18,7 +18,6 @@
 package org.apache.poi.hssf.usermodel;
 
 import org.apache.poi.hssf.model.Workbook;
-import org.apache.poi.hssf.record.BoundSheetRecord;
 import org.apache.poi.hssf.record.NameRecord;
 import org.apache.poi.hssf.util.RangeAddress;
 

Added: poi/trunk/src/testcases/org/apache/poi/hssf/data/30978-deleted.xls
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/data/30978-deleted.xls?rev=668153&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/src/testcases/org/apache/poi/hssf/data/30978-deleted.xls
------------------------------------------------------------------------------
    svn:executable = *

Propchange: poi/trunk/src/testcases/org/apache/poi/hssf/data/30978-deleted.xls
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java?rev=668153&r1=668152&r2=668153&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java Mon Jun 16 06:20:42 2008
@@ -30,6 +30,7 @@
 import org.apache.poi.hssf.record.NameRecord;
 import org.apache.poi.hssf.record.Record;
 import org.apache.poi.hssf.record.RecordInputStream;
+import org.apache.poi.hssf.record.formula.Area3DPtg;
 import org.apache.poi.util.TempFile;
 /**
  *
@@ -402,6 +403,39 @@
             assertTrue(e.getMessage().startsWith("Actual serialized sheet size"));
         }
     }
+    
+    /**
+     * Checks that us and HSSFName play nicely with named ranges
+     *  that point to deleted sheets
+     */
+    public void testNamesToDeleteSheets() throws Exception {
+    	HSSFWorkbook b = openSample("30978-deleted.xls");
+    	assertEquals(1, b.getNumberOfNames());
+    	
+    	// Sheet 2 deleted
+    	assertEquals("Sheet1", b.getSheetName(0));
+    	assertEquals("Sheet3", b.getSheetName(1));
+    	
+    	// First at low level
+    	NameRecord nr = b.getWorkbook().getNameRecord(0);
+    	assertEquals("On2", nr.getNameText());
+    	assertEquals(1, nr.getExternSheetNumber());
+    	assertEquals(1, nr.getNameDefinition().size());
+    	
+    	Area3DPtg ptg = (Area3DPtg)nr.getNameDefinition().get(0);
+    	assertEquals(1, ptg.getExternSheetIndex());
+    	assertEquals(0, ptg.getFirstColumn());
+    	assertEquals(0, ptg.getFirstRow());
+    	assertEquals(0, ptg.getLastColumn());
+    	assertEquals(2, ptg.getLastRow());
+    	
+    	// Now at high level
+    	HSSFName n = b.getNameAt(0);
+    	assertEquals("On2", n.getNameName());
+    	assertEquals("", n.getSheetName());
+    	assertEquals("#REF$A$1:$A$3", n.getReference());
+    }
+    
     /**
      * result returned by getRecordSize() differs from result returned by serialize()
      */



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org