summaryrefslogtreecommitdiffstats
path: root/odk/examples/CLI/CSharp/Spreadsheet/GeneralTableSample.cs
diff options
context:
space:
mode:
Diffstat (limited to 'odk/examples/CLI/CSharp/Spreadsheet/GeneralTableSample.cs')
-rw-r--r--odk/examples/CLI/CSharp/Spreadsheet/GeneralTableSample.cs222
1 files changed, 222 insertions, 0 deletions
diff --git a/odk/examples/CLI/CSharp/Spreadsheet/GeneralTableSample.cs b/odk/examples/CLI/CSharp/Spreadsheet/GeneralTableSample.cs
new file mode 100644
index 000000000..70942f737
--- /dev/null
+++ b/odk/examples/CLI/CSharp/Spreadsheet/GeneralTableSample.cs
@@ -0,0 +1,222 @@
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+using System;
+
+// __________ implementation ____________________________________
+
+/** Create a spreadsheet document and provide access to table contents.
+ */
+public class GeneralTableSample : SpreadsheetDocHelper
+{
+
+ public static void Main( String [] args )
+ {
+ try
+ {
+ using ( GeneralTableSample aSample =
+ new GeneralTableSample( args ) )
+ {
+ aSample.doSampleFunction();
+ }
+ Console.WriteLine( "Sample done." );
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine( "Sample caught exception! " + ex );
+ }
+ }
+
+
+
+ public GeneralTableSample( String[] args ) : base( args )
+ {
+ }
+
+
+
+ /// This sample function modifies cells and cell ranges.
+ public void doSampleFunction()
+ {
+ // for common usage
+ unoidl.com.sun.star.sheet.XSpreadsheet xSheet = getSpreadsheet( 0 );
+ unoidl.com.sun.star.beans.XPropertySet xPropSet = null;
+ unoidl.com.sun.star.table.XCell xCell = null;
+ unoidl.com.sun.star.table.XCellRange xCellRange = null;
+
+ // *** Access and modify a VALUE CELL ***
+ Console.WriteLine( "*** Sample for service table.Cell ***" );
+
+ xCell = xSheet.getCellByPosition( 0, 0 );
+ // Set cell value.
+ xCell.setValue( 1234 );
+
+ // Get cell value.
+ double nDblValue = xCell.getValue() * 2;
+ xSheet.getCellByPosition( 0, 1 ).setValue( nDblValue );
+
+ // *** Create a FORMULA CELL and query error type ***
+ xCell = xSheet.getCellByPosition( 0, 2 );
+ // Set formula string.
+ xCell.setFormula( "=1/0" );
+
+ // Get error type.
+ bool 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 = xSheet.getCellByPosition( 0, 3 );
+ unoidl.com.sun.star.text.XText xCellText =
+ (unoidl.com.sun.star.text.XText) xCell;
+ unoidl.com.sun.star.text.XTextCursor xTextCursor =
+ xCellText.createTextCursor();
+ xCellText.insertString( xTextCursor, aText, false );
+
+ // *** Change cell properties ***
+ int nValue = bValid ? 0x00FF00 : 0xFF4040;
+ xPropSet = (unoidl.com.sun.star.beans.XPropertySet) xCell;
+ xPropSet.setPropertyValue(
+ "CellBackColor", new uno.Any( (Int32) nValue ) );
+
+
+ // *** Accessing a CELL RANGE ***
+ Console.WriteLine( "*** Sample for service table.CellRange ***" );
+
+ // Accessing a cell range over its position.
+ xCellRange = xSheet.getCellRangeByPosition( 2, 0, 3, 1 );
+
+ // Change properties of the range.
+ xPropSet = (unoidl.com.sun.star.beans.XPropertySet) xCellRange;
+ xPropSet.setPropertyValue(
+ "CellBackColor", new uno.Any( (Int32) 0x8080FF ) );
+
+ // Accessing a cell range over its name.
+ xCellRange = xSheet.getCellRangeByName( "C4:D5" );
+
+ // Change properties of the range.
+ xPropSet = (unoidl.com.sun.star.beans.XPropertySet) xCellRange;
+ xPropSet.setPropertyValue(
+ "CellBackColor", new uno.Any( (Int32) 0xFFFF80 ) );
+
+
+ // *** Using the CELL CURSOR to add some data below of
+ // the filled area ***
+ Console.WriteLine( "*** Sample for service table.CellCursor ***" );
+
+ // Create a cursor using the XSpreadsheet method createCursorByRange()
+ xCellRange = xSheet.getCellRangeByName( "A1" );
+ unoidl.com.sun.star.sheet.XSheetCellRange xSheetCellRange =
+ (unoidl.com.sun.star.sheet.XSheetCellRange) xCellRange;
+
+ unoidl.com.sun.star.sheet.XSheetCellCursor xSheetCellCursor =
+ xSheet.createCursorByRange( xSheetCellRange );
+ unoidl.com.sun.star.table.XCellCursor xCursor =
+ (unoidl.com.sun.star.table.XCellCursor) xSheetCellCursor;
+
+ // Move to the last filled cell.
+ xCursor.gotoEnd();
+ // Move one row down.
+ xCursor.gotoOffset( 0, 1 );
+ xCursor.getCellByPosition( 0, 0 ).setFormula(
+ "Beyond of the last filled cell." );
+
+
+ // *** Modifying COLUMNS and ROWS ***
+ Console.WriteLine( "*** Sample for services table.TableRows and " +
+ "table.TableColumns ***" );
+
+ unoidl.com.sun.star.table.XColumnRowRange xCRRange =
+ (unoidl.com.sun.star.table.XColumnRowRange) xSheet;
+ unoidl.com.sun.star.table.XTableColumns xColumns =
+ xCRRange.getColumns();
+ unoidl.com.sun.star.table.XTableRows xRows = xCRRange.getRows();
+
+ // Get column C by index (interface XIndexAccess).
+ uno.Any aColumnObj = xColumns.getByIndex( 2 );
+ xPropSet = (unoidl.com.sun.star.beans.XPropertySet) aColumnObj.Value;
+ xPropSet.setPropertyValue( "Width", new uno.Any( (Int32) 5000 ) );
+
+ // Get the name of the column.
+ unoidl.com.sun.star.container.XNamed xNamed =
+ (unoidl.com.sun.star.container.XNamed) aColumnObj.Value;
+ aText = "The name of this column is " + xNamed.getName() + ".";
+ xSheet.getCellByPosition( 2, 2 ).setFormula( aText );
+
+ // Get column D by name (interface XNameAccess).
+ unoidl.com.sun.star.container.XNameAccess xColumnsName =
+ (unoidl.com.sun.star.container.XNameAccess) xColumns;
+
+ aColumnObj = xColumnsName.getByName( "D" );
+ xPropSet = (unoidl.com.sun.star.beans.XPropertySet) aColumnObj.Value;
+ xPropSet.setPropertyValue(
+ "IsVisible", new uno.Any( (Boolean) false ) );
+
+ // Get row 7 by index (interface XIndexAccess)
+ uno.Any aRowObj = xRows.getByIndex( 6 );
+ xPropSet = (unoidl.com.sun.star.beans.XPropertySet) aRowObj.Value;
+ xPropSet.setPropertyValue( "Height", new uno.Any( (Int32) 5000 ) );
+
+ xSheet.getCellByPosition( 2, 6 ).setFormula( "What a big cell." );
+
+ // Create a cell series with the values 1 ... 7.
+ for (int nRow = 8; nRow < 15; ++nRow)
+ xSheet.getCellByPosition( 0, nRow ).setValue( nRow - 7 );
+ // Insert a row between 1 and 2
+ xRows.insertByIndex( 9, 1 );
+ // Delete the rows with the values 3 and 4.
+ xRows.removeByIndex( 11, 2 );
+
+ // *** Inserting CHARTS ***
+ Console.WriteLine( "*** Sample for service table.TableCharts ***" );
+
+ unoidl.com.sun.star.table.XTableChartsSupplier xChartsSupp =
+ (unoidl.com.sun.star.table.XTableChartsSupplier) xSheet;
+ unoidl.com.sun.star.table.XTableCharts xCharts =
+ xChartsSupp.getCharts();
+
+ // The chart will base on the last cell series, initializing all values.
+ String aName = "newChart";
+ unoidl.com.sun.star.awt.Rectangle aRect =
+ new unoidl.com.sun.star.awt.Rectangle();
+ aRect.X = 10000;
+ aRect.Y = 3000;
+ aRect.Width = aRect.Height = 5000;
+ unoidl.com.sun.star.table.CellRangeAddress[] aRanges =
+ new unoidl.com.sun.star.table.CellRangeAddress[1];
+ aRanges[0] = createCellRangeAddress( xSheet, "A9:A14" );
+
+ // Create the chart.
+ xCharts.addNewByName( aName, aRect, aRanges, false, false );
+
+ // Get the chart by name.
+ uno.Any aChartObj = xCharts.getByName( aName );
+ unoidl.com.sun.star.table.XTableChart xChart =
+ (unoidl.com.sun.star.table.XTableChart) aChartObj.Value;
+
+ // Query the state of row and column headers.
+ aText = "Chart has column headers: ";
+ aText += xChart.getHasColumnHeaders() ? "yes" : "no";
+ xSheet.getCellByPosition( 2, 8 ).setFormula( aText );
+ aText = "Chart has row headers: ";
+ aText += xChart.getHasRowHeaders() ? "yes" : "no";
+ xSheet.getCellByPosition( 2, 9 ).setFormula( aText );
+ }
+
+}