aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org/apache
diff options
context:
space:
mode:
authorNick Burch <nick@apache.org>2014-07-19 19:10:47 +0000
committerNick Burch <nick@apache.org>2014-07-19 19:10:47 +0000
commit0bfa4f675d87381bd5521c85a119769d9c8ed786 (patch)
treea16d4db91ad499842f87749fd3e0b34e00ed5dbe /src/java/org/apache
parent7a372e6f361d6e27f98c16a6c8debf7976e886f0 (diff)
downloadpoi-0bfa4f675d87381bd5521c85a119769d9c8ed786.tar.gz
poi-0bfa4f675d87381bd5521c85a119769d9c8ed786.zip
The Event User Model fake-workbook for formula evaluations needs to know about the sheet names
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1611946 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org/apache')
-rw-r--r--src/java/org/apache/poi/hssf/eventusermodel/EventWorkbookBuilder.java9
-rw-r--r--src/java/org/apache/poi/ss/formula/ptg/ExternSheetNameResolver.java11
2 files changed, 16 insertions, 4 deletions
diff --git a/src/java/org/apache/poi/hssf/eventusermodel/EventWorkbookBuilder.java b/src/java/org/apache/poi/hssf/eventusermodel/EventWorkbookBuilder.java
index c6036d6582..b0d0388a2c 100644
--- a/src/java/org/apache/poi/hssf/eventusermodel/EventWorkbookBuilder.java
+++ b/src/java/org/apache/poi/hssf/eventusermodel/EventWorkbookBuilder.java
@@ -138,7 +138,14 @@ public class EventWorkbookBuilder {
}
public HSSFWorkbook getStubHSSFWorkbook() {
- return HSSFWorkbook.create(getStubWorkbook());
+ // Create a base workbook
+ HSSFWorkbook wb = HSSFWorkbook.create(getStubWorkbook());
+ // Stub the sheets, so sheet name lookups work
+ for (BoundSheetRecord bsr : boundSheetRecords) {
+ wb.createSheet(bsr.getSheetname());
+ }
+ // Ready for Formula use!
+ return wb;
}
public InternalWorkbook getStubWorkbook() {
return createStubWorkbook(
diff --git a/src/java/org/apache/poi/ss/formula/ptg/ExternSheetNameResolver.java b/src/java/org/apache/poi/ss/formula/ptg/ExternSheetNameResolver.java
index 150bd99e79..be20167ed9 100644
--- a/src/java/org/apache/poi/ss/formula/ptg/ExternSheetNameResolver.java
+++ b/src/java/org/apache/poi/ss/formula/ptg/ExternSheetNameResolver.java
@@ -17,8 +17,8 @@
package org.apache.poi.ss.formula.ptg;
-import org.apache.poi.ss.formula.FormulaRenderingWorkbook;
import org.apache.poi.ss.formula.EvaluationWorkbook.ExternalSheet;
+import org.apache.poi.ss.formula.FormulaRenderingWorkbook;
import org.apache.poi.ss.formula.SheetNameFormatter;
/**
@@ -36,8 +36,13 @@ final class ExternSheetNameResolver {
if (externalSheet != null) {
String wbName = externalSheet.getWorkbookName();
String sheetName = externalSheet.getSheetName();
- sb = new StringBuffer(wbName.length() + sheetName.length() + cellRefText.length() + 4);
- SheetNameFormatter.appendFormat(sb, wbName, sheetName);
+ if (wbName != null) {
+ sb = new StringBuffer(wbName.length() + sheetName.length() + cellRefText.length() + 4);
+ SheetNameFormatter.appendFormat(sb, wbName, sheetName);
+ } else {
+ sb = new StringBuffer(sheetName.length() + cellRefText.length() + 4);
+ SheetNameFormatter.appendFormat(sb, sheetName);
+ }
} else {
String sheetName = book.getSheetNameByExternSheet(field_1_index_extern_sheet);
sb = new StringBuffer(sheetName.length() + cellRefText.length() + 4);