From acfbb1648c7e29455a11d2bcaa42f8d45c85b5ae Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 16 Jun 2008 13:20:42 +0000 Subject: [PATCH] Slight tweak for named ranges pointing at deleted sheets, related to bug #30978 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@668153 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/hssf/model/Workbook.java | 3 ++ .../poi/hssf/record/formula/Area3DPtg.java | 11 ++++-- .../apache/poi/hssf/usermodel/HSSFName.java | 1 - .../apache/poi/hssf/data/30978-deleted.xls | Bin 0 -> 13824 bytes .../poi/hssf/usermodel/TestHSSFWorkbook.java | 34 ++++++++++++++++++ 5 files changed, 46 insertions(+), 3 deletions(-) create mode 100755 src/testcases/org/apache/poi/hssf/data/30978-deleted.xls diff --git a/src/java/org/apache/poi/hssf/model/Workbook.java b/src/java/org/apache/poi/hssf/model/Workbook.java index d87fc2c63..5b38935f4 100644 --- a/src/java/org/apache/poi/hssf/model/Workbook.java +++ b/src/java/org/apache/poi/hssf/model/Workbook.java @@ -603,6 +603,9 @@ public class Workbook implements Model boundsheets.remove(sheetnum); fixTabIdRecord(); } + + // If we decide that we need to fix up + // NameRecords, do it here } /** diff --git a/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java b/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java index 60911edc7..e8f72e993 100644 --- a/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java @@ -269,8 +269,15 @@ public class Area3DPtg extends OperandPtg implements AreaI { 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 diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFName.java b/src/java/org/apache/poi/hssf/usermodel/HSSFName.java index e24ca23ea..240be13f5 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFName.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFName.java @@ -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; diff --git a/src/testcases/org/apache/poi/hssf/data/30978-deleted.xls b/src/testcases/org/apache/poi/hssf/data/30978-deleted.xls new file mode 100755 index 0000000000000000000000000000000000000000..1daca5bff70bd033247acbb2fbc20c856512eb09 GIT binary patch literal 13824 zcmeHOU1%It6#iy*HrZ{`WRvtKtz=zx(b#0SrdF{K(rm?wf~BQJS~RjvlPwKNv$9#C zijdW|Zxt$i@TDNd7k{9(6!b+())(tTX%I@$r>zJ+ilSg4cKyzo9d~xk)+iLU-W$&S z`R=)M&U|xc_MSVF#cN&Va~C(>L_^w+0B%>pXz}3|>l?gw1njR=r0JEttP?WnKg2*d z#0%LHL{IE$YiWVi0B{pFE;uFTz&DgJyoA-jj>)4_vr}`0{CFXkkKN_;g!(XUi4O~$ zcq5hri*xcU@ea;H!Mio@(flLT{8aN1_LQwCo*kZla2xf&kq7Lw>b$*@2m$wF7xfVH`8Kd%aPo7rX{Q{M~pWnMe!`kEOh7)am10$a~8J zhF{p5oqW-+5Jjupn4ZGsA^&)`qD}%KMC&ygj-qOhVE{uwMvM={)RRog^`+LV_Qq3j z_GMD(Oe*Rmu?hV$u%h2gLv3y&>LN~?+sP6 zwQ*&v(aZXCC8njDEyM(u3$FN2Ue}#*nSsmcH^b$q%jw_CxP_RUUNw1q4!S)2(ui+r zf+w5c15NPoAMi7_gGez@k+Q4UqGfl{(Xyx5swIlha!oN2FRjUu#dJ6JfO5!}9Pkfp<>!~3#z)kW)(2G841lpw#j0_wOQ}UkW2312;sH zpWmR;^cRu1>8Q zkC9|OkDjN1(xAGHFmR{%-@bnJ`q|C*Mb5m<_&<5;yu|;D zlrTl&|2>pW$^i=B%J97sAaA*5C=%NjC=&O-Mp;KWL6QA{Qxw@B_<-Wy50JeCNfNtv z_P6P=r0u;qYb>KQBI9L0!hJtit8PVmwO4i&WaR!_etJ&c;?1c68EBGWz%XDKFbo(5 z3GHFkl!k3>XIfCk#j&FQKr++!BAw=dSWqq{P(ne;pF*%h!<-K}*ao@w_v`$1;nruvn=y?g;#FnX&r)=cV;q= zVj*{9Wx+kfQ_CGm=7Wdtr}aFhaY+4`_TUwl{2!3t?Ta5P9w-}BOhN3!%Q(uvaXt5E z$iiXuNst2n^CL&3d3uQU