Difference between revisions of "Documentation/DevGuide/Spreadsheets/Access to Formulas, Values and Errors"

From Apache OpenOffice Wiki
Jump to: navigation, search
(Added link to Number Format section of development guide.)
m (Replaced html table syntax by wiki table syntax)
Line 64: Line 64:
  
 
Note that since the only data attributes a cell has for representing numbers is value and formula, other types available in OpenOffice.org Calc have to be translated before you can use them. See <idl>com.sun.star.util.NumberFormat</idl> for the standard formats.
 
Note that since the only data attributes a cell has for representing numbers is value and formula, other types available in OpenOffice.org Calc have to be translated before you can use them. See <idl>com.sun.star.util.NumberFormat</idl> for the standard formats.
<table>
+
 
<tr>
+
{|border="1" cellpadding=4 style="border-collapse:collapse;"
<th>NumberFormat</th><th>Mapping to double</th></tr>
+
 
<tr><td>DATE</td><td>1 = one day; day 1 is 1899-12-31</td></tr>
+
|-bgcolor=#EDEDED
<tr><td>TIME</td><td>Fraction of a 24h day (1 = 24 hours)</td></tr>
+
 
<tr><td>PERCENT</td><td>1 = 100%</td></tr>
+
!NumberFormat
<tr><td>CURRENCY</td><td>1 = $1,£1 etc</td></tr>
+
 
<tr><td>LOGICAL</td><td>FALSE if zero, TRUE otherwise</td></tr>
+
!Mapping to double
<tr><td></td><td></td></tr>
+
 
</table>
+
|-
 +
 
 +
|DATE
 +
 
 +
|1 = one day; day 1 is 1899-12-31
 +
 
 +
|-
 +
 
 +
|TIME
 +
 
 +
|Fraction of a 24h day (1 = 24 hours)
 +
 
 +
|-
 +
 
 +
|PERCENT
 +
 
 +
|1 = 100%
 +
 
 +
|-
 +
 
 +
|CURRENCY
 +
 
 +
|1 = $1, £1 etc
 +
 
 +
|-
 +
 
 +
|LOGICAL
 +
 
 +
|FALSE if zero, TRUE otherwise
 +
 
 +
|}
  
 
How this value will be shown to the user depends on the cell's [[Documentation/DevGuide/OfficeDev/Number_Formats|Number Format]].
 
How this value will be shown to the user depends on the cell's [[Documentation/DevGuide/OfficeDev/Number_Formats|Number Format]].

Revision as of 08:58, 29 May 2015



The cell interface com.sun.star.table.XCell provides methods to access the value, formula, content type, and error code of a single cell:

 void setValue( [in] double nValue)
 double getValue() 
 void setFormula( [in] string aFormula)
 string getFormula() 
 com::sun::star::table::CellContentType getType()
 long getError()

The value of a cell is a floating-point number. To set a formula to a cell, the whole formula string has to be passed including the leading equality sign. The function names must be in English.

Template:Documentation/Tip

The method getType() returns a value of the enumeration com.sun.star.table.CellContentType indicating the type of the cell content.

The following code fragment shows how to access and modify the content, and formatting of single cells. The xRange is an existing cell range (a com.sun.star.table.XCellRange interface, described in Cell Ranges). The method getCellByPosition() is provided by this interface.

 com.sun.star.beans.XPropertySet xPropSet = null;
 com.sun.star.table.XCell xCell = null;
 
 // *** Access and modify a VALUE CELL ***
 xCell = xRange.getCellByPosition(0, 0);
 // Set cell value.
 xCell.setValue(1234);
 
 // Get cell value.
 double nDblValue = xCell.getValue() * 2;
 xRange.getCellByPosition(0, 1).setValue(nDblValue);
 
 // *** Create a FORMULA CELL and query error type ***
 xCell = xRange.getCellByPosition(0, 2);
 // Set formula string.
 xCell.setFormula("=1/0");
 
 // Get error type.
 boolean bValid = (xCell.getError() == 0);
 // Get formula string.
 String aText = "The formula " + xCell.getFormula() + " is ";
 aText += bValid ? "valid." : "erroneous.";
 
 // *** Insert a TEXT CELL using the XText interface ***
 xCell = xRange.getCellByPosition( 0, 3 );
 com.sun.star.text.XText xCellText = (com.sun.star.text.XText)
     UnoRuntime.queryInterface( com.sun.star.text.XText.class, xCell );
 com.sun.star.text.XTextCursor xTextCursor = xCellText.createTextCursor();
 xCellText.insertString( xTextCursor, aText, false );
 
 // *** Change cell properties ***
 int nValue = bValid ? 0x00FF00 : 0xFF4040;
 xPropSet = (com.sun.star.beans.XPropertySet) UnoRuntime.queryInterface(
     com.sun.star.beans.XPropertySet.class, xCell);
 xPropSet.setPropertyValue("CellBackColor", new Integer(nValue));

Note that since the only data attributes a cell has for representing numbers is value and formula, other types available in OpenOffice.org Calc have to be translated before you can use them. See com.sun.star.util.NumberFormat for the standard formats.

NumberFormat Mapping to double
DATE 1 = one day; day 1 is 1899-12-31
TIME Fraction of a 24h day (1 = 24 hours)
PERCENT 1 = 100%
CURRENCY 1 = $1, £1 etc
LOGICAL FALSE if zero, TRUE otherwise

How this value will be shown to the user depends on the cell's Number Format.

Content on this page is licensed under the Public Documentation License (PDL).
Personal tools
In other languages