aboutsummaryrefslogtreecommitdiffstats
path: root/src/ooxml/java
diff options
context:
space:
mode:
authorYegor Kozlov <yegor@apache.org>2009-09-16 19:16:39 +0000
committerYegor Kozlov <yegor@apache.org>2009-09-16 19:16:39 +0000
commit759683dcc0084497ecccac8aa917f11e22e8aa85 (patch)
tree011b96eedc994946332e009ffd7b04b9383d54a9 /src/ooxml/java
parenta90c8202db19b858a2c3b5c1d0fcc83428e99afa (diff)
downloadpoi-759683dcc0084497ecccac8aa917f11e22e8aa85.tar.gz
poi-759683dcc0084497ecccac8aa917f11e22e8aa85.zip
improved work with user-defined functions, see Bugzilla 47809
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@815928 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/ooxml/java')
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFEvaluationWorkbook.java7
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java25
2 files changed, 32 insertions, 0 deletions
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFEvaluationWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFEvaluationWorkbook.java
index 5264281f00..5e6fd93904 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFEvaluationWorkbook.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFEvaluationWorkbook.java
@@ -20,6 +20,7 @@ package org.apache.poi.xssf.usermodel;
import org.apache.poi.hssf.record.formula.NamePtg;
import org.apache.poi.hssf.record.formula.NameXPtg;
import org.apache.poi.hssf.record.formula.Ptg;
+import org.apache.poi.hssf.record.formula.functions.FreeRefFunction;
import org.apache.poi.ss.formula.*;
import org.apache.poi.ss.SpreadsheetVersion;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDefinedName;
@@ -28,6 +29,8 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDefinedName;
* Internal POI use only
*
* @author Josh Micich
+ *
+ * Modified 09/07/09 by Petr Udalau - added methods for searching for UDFs of this Workbook.
*/
public final class XSSFEvaluationWorkbook implements FormulaRenderingWorkbook, EvaluationWorkbook, FormulaParsingWorkbook {
@@ -177,4 +180,8 @@ public final class XSSFEvaluationWorkbook implements FormulaRenderingWorkbook, E
public SpreadsheetVersion getSpreadsheetVersion(){
return SpreadsheetVersion.EXCEL2007;
}
+
+ public FreeRefFunction findUserDefinedFunction(String functionName) {
+ return _uBook.getUserDefinedFunction(functionName);
+ }
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
index e761146d3e..ffd1736119 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
@@ -32,6 +32,7 @@ import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.POIXMLException;
import org.apache.poi.POIXMLProperties;
import org.apache.poi.hssf.record.formula.SheetNameFormatter;
+import org.apache.poi.hssf.record.formula.functions.FreeRefFunction;
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackagePart;
@@ -40,6 +41,7 @@ import org.apache.poi.openxml4j.opc.PackageRelationship;
import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
import org.apache.poi.openxml4j.opc.PackagingURIHelper;
import org.apache.poi.openxml4j.opc.TargetMode;
+import org.apache.poi.ss.usermodel.Name;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
@@ -63,6 +65,8 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
* High level representation of a SpreadsheetML workbook. This is the first object most users
* will construct whether they are reading or writing a workbook. It is also the
* top level object for creating new sheets/etc.
+ *
+ * Modified 09/07/09 by Petr Udalau - added methods for work with UDFs of this Workbook.
*/
public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<XSSFSheet> {
private static final Pattern COMMA_PATTERN = Pattern.compile(",");
@@ -129,6 +133,9 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
private List<XSSFPictureData> pictures;
private static POILogger logger = POILogFactory.getLogger(XSSFWorkbook.class);
+
+ /** Map of user defined functions, key - function name, value - instance of FreeRefFunctions */
+ private Map<String, FreeRefFunction> udfFunctions = new HashMap<String, FreeRefFunction>();
/**
* Create a new SpreadsheetML workbook.
@@ -1346,4 +1353,22 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
return mapInfo;
}
+ public FreeRefFunction getUserDefinedFunction(String functionName) {
+ return udfFunctions.get(functionName);
+ }
+
+ public void registerUserDefinedFunction(String functionName, FreeRefFunction freeRefFunction) {
+ Name udfDeclaration = getName(functionName);
+ if (udfDeclaration == null) {
+ udfDeclaration = createName();
+ }
+ udfDeclaration.setNameName(functionName);
+ udfDeclaration.setFunction(true);
+ udfFunctions.put(functionName, freeRefFunction);
+ }
+
+ public List<String> getUserDefinedFunctionNames() {
+ return new ArrayList<String>(udfFunctions.keySet());
+ }
+
}