From 8a92f65d093830b736437fbcff7628e09badfa20 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 18 Jun 2008 11:35:04 +0000 Subject: [PATCH] A partial fix for bug #30978, but something still remains, which seems to be related to changing the ptg git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@669140 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/hssf/model/Workbook.java | 24 ++++++- .../org/apache/poi/hssf/data/30978-alt.xls | Bin 0 -> 14848 bytes .../apache/poi/hssf/usermodel/TestBugs.java | 62 ++++++++++++++++++ 3 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 src/testcases/org/apache/poi/hssf/data/30978-alt.xls diff --git a/src/java/org/apache/poi/hssf/model/Workbook.java b/src/java/org/apache/poi/hssf/model/Workbook.java index 5b38935f4..fa22cfb68 100644 --- a/src/java/org/apache/poi/hssf/model/Workbook.java +++ b/src/java/org/apache/poi/hssf/model/Workbook.java @@ -604,8 +604,28 @@ public class Workbook implements Model fixTabIdRecord(); } - // If we decide that we need to fix up - // NameRecords, do it here + // Within NameRecords, it's ok to have the formula + // part point at deleted sheets. It's also ok to + // have the ExternSheetNumber point at deleted + // sheets. + // However, the sheet index must be adjusted, or + // excel will break. (Sheet index is either 0 for + // global, or 1 based index to sheet) + int sheetNum1Based = sheetnum + 1; + for(int i=0; i sheetNum1Based) { + // Bump down by one, so still points + // at the same sheet + nr.setEqualsToIndexToSheet((short)( + nr.getEqualsToIndexToSheet()-1 + )); + } + } } /** diff --git a/src/testcases/org/apache/poi/hssf/data/30978-alt.xls b/src/testcases/org/apache/poi/hssf/data/30978-alt.xls new file mode 100644 index 0000000000000000000000000000000000000000..c591582885aef5e605d28e22c31761b8d74540c5 GIT binary patch literal 14848 zcmeHOU2IfE6#njVx7`AT{_$5}bKRo-rN0TFw6s_tXeba`LzN}9v|Fi^uGuaLO*AeF z48ExbOzXz#7cJ-O(&$B+w0}7d!7cVE*W+ygIm$X_7SjhcuAo zVMk`Tv9I`Y=2sCWUBC^vaNfMg7`Vyc#|xMZv~-5U*1Ae-V{c!dHP!IAlA+TO8HQ+h z4MqkGn6%21%$b8lO1eB1=d1W5#ruVd8<2(8kN5$L;ZeuM%=tU>`Fx9yxmO<}0cw zDyr@%UF|P%Ui_tA^C9~2lBE0{+XCG?lbL+T#L_rZWp#2re3z<<;el@~*O=O(tSeE5 zTA)KjDYG2OqOblEMevudjuL#!eU!VSq^X0gRHBp*izb#Uvl0uHSxF@tQGv&j8?(P4 zxjiLXLX(Y+@kUpmoIMHZ2)@tGc~r4&K46B!zm-YP?HX;*uyCV`3k$xYw6t<%wOXy?34f}_uJTMvJXrI$`Xub6;dmXhvfwYOw3Fs2`6`H+fkAS-1(BAt?-hH1l)b=+kl zCo*GHaBd_+;k<~caDF6H;etq(!t){?g%N?m^CRxjXVvh2h?B;NOsO*iTRWc%ST#bq zmX$!M70UNB6DW0uIpr99&KWZG7&LN^vRM}=i-j`Y02ZBBoLQhb*dGpcc7;1?tD9R} z8Mievs;;Y9S-paZ!3LX6;){ld0cbm7;Ep(E6h>LI2O@+$HRmKv&9huF#VGy*ls{Wd zVzU`{(=la2%ViAuwg-34{CcHj*Ve`kMK4qIauvU#D3OGgAEtge@!nc#e{BN{okdMBI1)F&;qFA?9UwqL`WkX{$pOXmW}XPl_7e;H)(zYM3M+ zy25_-^9j*+`jr=TqXz@1=2JuZHZ-G-PYsr16V}qJ){~YDhFOq#9k<;1-`JibJ|vbo zmsTkqVvk^nK4f7PJ+cN>T*6t(TWk1c(Kq9sncT)iZ&G{I@KdsI;lx4tP?I3xyBDwU z+&?T-MRJPe;kc+86jFszVboJ=;+cu~ym{Vyp7gXpK2JdjHmh+fAS>5NfXS|JoJcZh zN1{{->93U(_y07KCA3>@kdhT3&N_1F z&EIZs*`0ItmpL|F>o!#b26wdJ4h^p*inXjhLa33 zx&O#QUSfMd7*J{9OFUo%mmI<)2G-Ks6$%and&1WG{at}R)o$d@krO{1y<{{oKk{1D z4;PMIGNKD&QZ#4{Xbor$Xbor$Xbor$Xbor$Xbor$Xbor$XbmK4;9mQG*VW5cPgX9@ zIsQ8L{}s2-$^QQugB-cY-hC?rZvsGm0h6PdZU*@=RQCU}Zx1ubzW+sr`3%l^z+tB4 zNaq5>`161|^~2W9MKe`hWSJ0q*@*1<G!1G@u( z@PI0>&kd*(4O#Jc=3hI&v{Qn?7$&!XX_#C z!7e4o9*3MZ=0Ct