diff options
author | Yegor Kozlov <yegor@apache.org> | 2009-09-16 19:16:39 +0000 |
---|---|---|
committer | Yegor Kozlov <yegor@apache.org> | 2009-09-16 19:16:39 +0000 |
commit | 759683dcc0084497ecccac8aa917f11e22e8aa85 (patch) | |
tree | 011b96eedc994946332e009ffd7b04b9383d54a9 /src/ooxml/java | |
parent | a90c8202db19b858a2c3b5c1d0fcc83428e99afa (diff) | |
download | poi-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.java | 7 | ||||
-rw-r--r-- | src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java | 25 |
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()); + } + } |