[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    koffice/kspread/functions
From:       Sebastian Sauer <mail () dipe ! org>
Date:       2010-02-10 16:47:34
Message-ID: 1265820454.507953.15491.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1088373 by sebsauer:

added the FORMULA function which allows to return the string representation of a cell's formula.

 M  +21 -0     information.cpp  
 M  +14 -0     information.xml  


--- trunk/koffice/kspread/functions/information.cpp #1088372:1088373
@@ -34,6 +34,10 @@
 #include "InformationModule.h"
 #include "ValueCalc.h"
 #include "ValueConverter.h"
+#include "Sheet.h"
+#include "Region.h"
+#include "Cell.h"
+#include "Formula.h"
 
 #include "part/Doc.h" // FIXME detach from part
 
@@ -42,6 +46,7 @@
 // prototypes (sorted alphabetically)
 Value func_errortype(valVector args, ValueCalc *calc, FuncExtra *);
 Value func_filename(valVector args, ValueCalc *calc, FuncExtra *);
+Value func_formula(valVector args, ValueCalc *calc, FuncExtra *);
 Value func_info(valVector args, ValueCalc *calc, FuncExtra *);
 Value func_isblank(valVector args, ValueCalc *calc, FuncExtra *);
 Value func_isdate(valVector args, ValueCalc *calc, FuncExtra *);
@@ -90,6 +95,10 @@
     f = new Function("FILENAME", func_filename);
     f->setParamCount(0);
     repo->add(f);
+    f = new Function("FORMULA", func_formula);
+    f->setParamCount(1);
+    f->setNeedsExtra(true);
+    repo->add(f);
     f = new Function("INFO", func_info);
     repo->add(f);
     f = new Function("ISBLANK", func_isblank);
@@ -349,6 +358,18 @@
     return Value(calc->settings()->fileName());
 }
 
+Value func_formula(valVector args, ValueCalc *calc, FuncExtra *e)
+{
+    if(e->ranges[0].col1 < 1 || e->ranges[0].row1 < 1)
+        return Value::errorVALUE();
+    const KSpread::Cell c(e->sheet, e->ranges[0].col1, e->ranges[0].row1);
+    if (c.isNull())
+        return Value::errorVALUE();
+    if (!c.isFormula())
+        return Value::errorNA();
+    return Value(c.formula().expression());
+}
+
 // Function: N
 Value func_n(valVector args, ValueCalc *calc, FuncExtra *)
 {
--- trunk/koffice/kspread/functions/information.xml #1088372:1088373
@@ -20,6 +20,20 @@
     </Function>
 
     <Function>
+      <Name>FORMULA</Name>
+      <Type>String</Type>
+      <Parameter>
+        <Comment>Reference</Comment>
+        <Type>Reference</Type>
+      </Parameter>
+      <Help>
+        <Text>The FORMULA() function returns the formula of a cell as string.</Text>
+        <Syntax>FORMULA(x)</Syntax>
+        <Example>FORMULA(A1) returns "=SUM(1+2)" if the cell A1 contains such a formula.</Example>
+      </Help>
+    </Function>
+
+    <Function>
       <Name>N</Name>
       <Type>Int</Type>
       <Parameter>
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic