aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org/apache/poi/hssf
diff options
context:
space:
mode:
authorNick Burch <nick@apache.org>2008-06-18 11:35:04 +0000
committerNick Burch <nick@apache.org>2008-06-18 11:35:04 +0000
commit1f08e18ea8d04bb26b2c2fc52de6fb30e356cf86 (patch)
tree293eda7e0ca08897484619978bb52c1f7a86b40f /src/java/org/apache/poi/hssf
parent5c27b368a603b7568648ac8dae3c1699217dfb32 (diff)
downloadpoi-1f08e18ea8d04bb26b2c2fc52de6fb30e356cf86.tar.gz
poi-1f08e18ea8d04bb26b2c2fc52de6fb30e356cf86.zip
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
Diffstat (limited to 'src/java/org/apache/poi/hssf')
-rw-r--r--src/java/org/apache/poi/hssf/model/Workbook.java24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/java/org/apache/poi/hssf/model/Workbook.java b/src/java/org/apache/poi/hssf/model/Workbook.java
index 5b38935f4c..fa22cfb688 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<getNumNames(); i++) {
+ NameRecord nr = getNameRecord(i);
+
+ if(nr.getIndexToSheet() == sheetNum1Based) {
+ // Excel re-writes these to point to no sheet
+ nr.setEqualsToIndexToSheet((short)0);
+ } else if(nr.getIndexToSheet() > sheetNum1Based) {
+ // Bump down by one, so still points
+ // at the same sheet
+ nr.setEqualsToIndexToSheet((short)(
+ nr.getEqualsToIndexToSheet()-1
+ ));
+ }
+ }
}
/**