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

From Apache OpenOffice Wiki
Jump to: navigation, search
(Wrote how dates & times are stored in the value attribute - this is non-obvious.)
m (FINAL VERSION FOR L10N)
Line 7: Line 7:
 
|NextPage=Documentation/DevGuide/Spreadsheets/Access to Text Content
 
|NextPage=Documentation/DevGuide/Spreadsheets/Access to Text Content
 
}}
 
}}
{{DISPLAYTITLE:Access to Formulas, Values and Errors}}
+
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Spreadsheets/{{SUBPAGENAME}}}}
 +
{{DISPLAYTITLE:Access to Formulas, Values and Errors}}
 
The cell interface <idl>com.sun.star.table.XCell</idl> provides methods to access the value, formula, content type, and error code of a single cell:
 
The cell interface <idl>com.sun.star.table.XCell</idl> provides methods to access the value, formula, content type, and error code of a single cell:
  

Revision as of 10:25, 14 May 2009



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 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.

NumberFormatMapping to double
DATE1 = one day; day 1 is 1899-12-31
TIMEFraction of a 24h day (1 = 24 hours)
PERCENT1 = 100%
CURRENCY1 = $1,£1 etc
LOGICALFALSE if zero, TRUE otherwise

The format string defines how the number will be shown to the user.

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