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