summaryrefslogtreecommitdiff
path: root/odk/examples/java/Spreadsheet
diff options
context:
space:
mode:
authorRüdiger Timm <rt@openoffice.org>2003-04-17 08:50:22 +0000
committerRüdiger Timm <rt@openoffice.org>2003-04-17 08:50:22 +0000
commit058d1f48d26adce19437a0c8635071edff6e2320 (patch)
treec6c50588197f1b01881e6e92bb0d5f866a0b1d79 /odk/examples/java/Spreadsheet
parent895e07550e8c0bb6a20da0fb107ce2349169fd03 (diff)
INTEGRATION: CWS sdk01 (1.1.2); FILE ADDED
2003/03/12 14:59:11 jsc 1.1.2.1: #108153# moved from calc/CalcAddin directory
Diffstat (limited to 'odk/examples/java/Spreadsheet')
-rw-r--r--odk/examples/java/Spreadsheet/SCalc.java415
1 files changed, 415 insertions, 0 deletions
diff --git a/odk/examples/java/Spreadsheet/SCalc.java b/odk/examples/java/Spreadsheet/SCalc.java
new file mode 100644
index 000000000000..9c47985c591b
--- /dev/null
+++ b/odk/examples/java/Spreadsheet/SCalc.java
@@ -0,0 +1,415 @@
+//ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
+// Name : SCalc
+//***************************************************************************
+//
+// comment: Step 1: connect to the office an get the MSF
+// Step 2: open an empty calc document
+// Step 3: create cell styles
+// Step 4: get the sheet an insert some data
+// Step 5: apply the created cell syles
+// Step 6: insert a 3D Chart
+//
+//***************************************************************************
+// date : Tue August 22 2000
+//
+//***************************************************************************
+
+// base interface
+import com.sun.star.uno.XInterface;
+
+// access the implementations via names
+import com.sun.star.comp.servicemanager.ServiceManager;
+
+
+import com.sun.star.lang.XMultiServiceFactory;
+import com.sun.star.lang.XMultiComponentFactory;
+import com.sun.star.connection.XConnector;
+import com.sun.star.connection.XConnection;
+
+import com.sun.star.bridge.XUnoUrlResolver;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XInterface;
+import com.sun.star.uno.XNamingService;
+import com.sun.star.uno.XComponentContext;
+
+
+// staroffice interfaces to provide desktop and componentloader
+// and components i.e. spreadsheets, writerdocs etc.
+import com.sun.star.frame.XDesktop;
+import com.sun.star.frame.XComponentLoader;
+
+// additional classes required
+import com.sun.star.sheet.*;
+import com.sun.star.container.*;
+import com.sun.star.table.*;
+import com.sun.star.beans.*;
+import com.sun.star.style.*;
+import com.sun.star.lang.*;
+import com.sun.star.text.*;
+import com.sun.star.chart.*;
+import com.sun.star.document.*;
+import com.sun.star.awt.Rectangle;
+
+public class SCalc {
+
+ public static void main(String args[]) {
+
+ //oooooooooooooooooooooooooooStep 1oooooooooooooooooooooooooooooooooooooooooo
+ // connect to the office an get the MultiServiceFactory
+ // this is necessary to create instances of Services
+ //***************************************************************************
+ String sConnectionString = "uno:socket,host=localhost,port=8100;urp;StarOffice.NamingService";
+
+ // It is possible to use a different connection string, passed as argument
+ if ( args.length == 1 ) {
+ sConnectionString = args[0];
+ }
+
+ XMultiServiceFactory xMSF = null;
+ XSpreadsheetDocument myDoc = null;
+ XCell oCell = null;
+
+
+ // create connection(s) and get multiservicefactory
+
+
+ // create connection(s) and get multiservicefactory
+ System.out.println( "getting MultiServiceFactory" );
+
+ try {
+ xMSF = connect( sConnectionString );
+ } catch( com.sun.star.uno.RuntimeException Ex ) {
+ System.out.println( "Couldn't get MSF"+ Ex.getMessage() );
+ return;
+ } catch( Exception Ex ) {
+ }
+
+ //***************************************************************************
+
+ //oooooooooooooooooooooooooooStep 2oooooooooooooooooooooooooooooooooooooooooo
+ // open an empty document. In this case it's a calc document.
+ // For this purpose an instance of com.sun.star.frame.Desktop
+ // is created. It's interface XDesktop provides the XComponentLoader,
+ // which is used to open the document via loadComponentFromURL
+ //***************************************************************************
+
+
+ //Open document
+
+ //Calc
+
+ System.out.println("Opening an empty Calc document");
+ myDoc = openCalc(xMSF);
+
+ //***************************************************************************
+
+
+ //oooooooooooooooooooooooooooStep 3oooooooooooooooooooooooooooooooooooooooooo
+ // create cell styles.
+ // For this purpose get the StyleFamiliesSupplier and the the familiy
+ // CellStyle. Create an instance of com.sun.star.style.CellStyle and
+ // add it to the family. Now change some properties
+ //***************************************************************************
+
+ try {
+ XStyleFamiliesSupplier xSFS = (XStyleFamiliesSupplier) UnoRuntime.queryInterface(XStyleFamiliesSupplier.class, myDoc);
+ XNameAccess xSF = (XNameAccess) xSFS.getStyleFamilies();
+ XNameAccess xCS = (XNameAccess) UnoRuntime.queryInterface(
+ XNameAccess.class, xSF.getByName("CellStyles"));
+ XMultiServiceFactory oDocMSF = (XMultiServiceFactory) UnoRuntime.queryInterface(
+ XMultiServiceFactory.class, myDoc );
+ XNameContainer oStyleFamilyNameContainer = (XNameContainer) UnoRuntime.queryInterface(
+ XNameContainer.class, xCS);
+ XInterface oInt1 = (XInterface) oDocMSF.createInstance("com.sun.star.style.CellStyle");
+ oStyleFamilyNameContainer.insertByName("My Style", oInt1);
+ XPropertySet oCPS1 = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, oInt1 );
+ oCPS1.setPropertyValue("IsCellBackgroundTransparent", new Boolean(false));
+ oCPS1.setPropertyValue("CellBackColor",new Integer(6710932));
+ oCPS1.setPropertyValue("CharColor",new Integer(16777215));
+ XInterface oInt2 = (XInterface) oDocMSF.createInstance("com.sun.star.style.CellStyle");
+ oStyleFamilyNameContainer.insertByName("My Style2", oInt2);
+ XPropertySet oCPS2 = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, oInt2 );
+ oCPS2.setPropertyValue("IsCellBackgroundTransparent", new Boolean(false));
+ oCPS2.setPropertyValue("CellBackColor",new Integer(13421823));
+ } catch (Exception e) {
+ }
+
+ //***************************************************************************
+
+ //oooooooooooooooooooooooooooStep 4oooooooooooooooooooooooooooooooooooooooooo
+ // get the sheet an insert some data.
+ // Get the sheets from the document and then the first from this container.
+ // Now some data can be inserted. For this purpose get a Cell via
+ // getCellByPosition and insert into this cell via setValue() (for floats)
+ // or setFormula() for formulas and Strings
+ //***************************************************************************
+
+
+ XSpreadsheet oSheet=null;
+
+ try {
+ System.out.println("Getting spreadsheet") ;
+ XSpreadsheets oSheets = myDoc.getSheets() ;
+ XIndexAccess oIndexSheets = (XIndexAccess) UnoRuntime.queryInterface(
+ XIndexAccess.class, oSheets);
+ oSheet = (XSpreadsheet) UnoRuntime.queryInterface(
+ XSpreadsheet.class, oIndexSheets.getByIndex(0));
+
+ } catch (Exception e) {
+ System.out.println("Couldn't get Sheet " +e);
+ }
+
+
+
+ System.out.println("Creating the Header") ;
+
+ insertIntoCell(1,0,"JAN",oSheet,"");
+ insertIntoCell(2,0,"FEB",oSheet,"");
+ insertIntoCell(3,0,"MAR",oSheet,"");
+ insertIntoCell(4,0,"APR",oSheet,"");
+ insertIntoCell(5,0,"MAI",oSheet,"");
+ insertIntoCell(6,0,"JUN",oSheet,"");
+ insertIntoCell(7,0,"JUL",oSheet,"");
+ insertIntoCell(8,0,"AUG",oSheet,"");
+ insertIntoCell(9,0,"SEP",oSheet,"");
+ insertIntoCell(10,0,"OCT",oSheet,"");
+ insertIntoCell(11,0,"NOV",oSheet,"");
+ insertIntoCell(12,0,"DEC",oSheet,"");
+ insertIntoCell(13,0,"SUM",oSheet,"");
+
+
+ System.out.println("Fill the lines");
+
+ insertIntoCell(0,1,"Smith",oSheet,"");
+ insertIntoCell(1,1,"42",oSheet,"V");
+ insertIntoCell(2,1,"58.9",oSheet,"V");
+ insertIntoCell(3,1,"-66.5",oSheet,"V");
+ insertIntoCell(4,1,"43.4",oSheet,"V");
+ insertIntoCell(5,1,"44.5",oSheet,"V");
+ insertIntoCell(6,1,"45.3",oSheet,"V");
+ insertIntoCell(7,1,"-67.3",oSheet,"V");
+ insertIntoCell(8,1,"30.5",oSheet,"V");
+ insertIntoCell(9,1,"23.2",oSheet,"V");
+ insertIntoCell(10,1,"-97.3",oSheet,"V");
+ insertIntoCell(11,1,"22.4",oSheet,"V");
+ insertIntoCell(12,1,"23.5",oSheet,"V");
+ insertIntoCell(13,1,"=SUM(B2:M2)",oSheet,"");
+
+
+ insertIntoCell(0,2,"Jones",oSheet,"");
+ insertIntoCell(1,2,"21",oSheet,"V");
+ insertIntoCell(2,2,"40.9",oSheet,"V");
+ insertIntoCell(3,2,"-57.5",oSheet,"V");
+ insertIntoCell(4,2,"-23.4",oSheet,"V");
+ insertIntoCell(5,2,"34.5",oSheet,"V");
+ insertIntoCell(6,2,"59.3",oSheet,"V");
+ insertIntoCell(7,2,"27.3",oSheet,"V");
+ insertIntoCell(8,2,"-38.5",oSheet,"V");
+ insertIntoCell(9,2,"43.2",oSheet,"V");
+ insertIntoCell(10,2,"57.3",oSheet,"V");
+ insertIntoCell(11,2,"25.4",oSheet,"V");
+ insertIntoCell(12,2,"28.5",oSheet,"V");
+ insertIntoCell(13,2,"=SUM(B3:M3)",oSheet,"");
+
+ insertIntoCell(0,3,"Brown",oSheet,"");
+ insertIntoCell(1,3,"31.45",oSheet,"V");
+ insertIntoCell(2,3,"-20.9",oSheet,"V");
+ insertIntoCell(3,3,"-117.5",oSheet,"V");
+ insertIntoCell(4,3,"23.4",oSheet,"V");
+ insertIntoCell(5,3,"-114.5",oSheet,"V");
+ insertIntoCell(6,3,"115.3",oSheet,"V");
+ insertIntoCell(7,3,"-171.3",oSheet,"V");
+ insertIntoCell(8,3,"89.5",oSheet,"V");
+ insertIntoCell(9,3,"41.2",oSheet,"V");
+ insertIntoCell(10,3,"71.3",oSheet,"V");
+ insertIntoCell(11,3,"25.4",oSheet,"V");
+ insertIntoCell(12,3,"38.5",oSheet,"V");
+ insertIntoCell(13,3,"=SUM(A4:L4)",oSheet,"");
+
+ //***************************************************************************
+
+ //oooooooooooooooooooooooooooStep 5oooooooooooooooooooooooooooooooooooooooooo
+ // apply the created cell style.
+ // For this purpose get the PropertySet of the Cell and change the
+ // property CellStyle to the appropriate value.
+ //***************************************************************************
+
+ // change backcolor
+ chgbColor( 1 , 0, 13, 0, "My Style", oSheet );
+ chgbColor( 0 , 1, 0, 3, "My Style", oSheet );
+ chgbColor( 1 , 1, 13, 3, "My Style2", oSheet );
+
+ //***************************************************************************
+
+ //oooooooooooooooooooooooooooStep 6oooooooooooooooooooooooooooooooooooooooooo
+ // insert a 3D chart.
+ // get the CellRange which holds the data for the chart and its RangeAddress
+ // get the TableChartSupplier from the sheet and then the TableCharts from it.
+ // add a new chart based on the data to the TableCharts.
+ // get the ChartDocument, which provide the Diagramm. Change the properties
+ // Dim3D (3 dimension) and String (the title) of the diagramm.
+ //***************************************************************************
+
+ // insert a chart
+
+ Rectangle oRect = new Rectangle();
+ oRect.X = 500;
+ oRect.Y = 3000;
+ oRect.Width = 25000;
+ oRect.Height = 11000;
+
+ XCellRange oRange = (XCellRange)UnoRuntime.queryInterface(XCellRange.class, oSheet);
+ XCellRange myRange = oRange.getCellRangeByName("A1:N4");
+ XCellRangeAddressable oRangeAddr = (XCellRangeAddressable)UnoRuntime.queryInterface(
+ XCellRangeAddressable.class, myRange);
+ CellRangeAddress myAddr = oRangeAddr.getRangeAddress();
+
+ CellRangeAddress[] oAddr = new CellRangeAddress[1];
+ oAddr[0] = myAddr;
+ XTableChartsSupplier oSupp = (XTableChartsSupplier)UnoRuntime.queryInterface(
+ XTableChartsSupplier.class, oSheet);
+
+ XTableChart oChart = null;
+
+ System.out.println("Insert Chart");
+
+ XTableCharts oCharts = oSupp.getCharts();
+ oCharts.addNewByName("Example", oRect, oAddr, true, true);
+
+ // get the diagramm and Change some of the properties
+
+ try {
+ oChart = (XTableChart) (UnoRuntime.queryInterface(
+ XTableChart.class, ((XNameAccess) UnoRuntime.queryInterface(
+ XNameAccess.class, oCharts)).getByName("Example")));
+ XEmbeddedObjectSupplier oEOS = (XEmbeddedObjectSupplier) UnoRuntime.queryInterface(
+ XEmbeddedObjectSupplier.class, oChart);
+ XInterface oInt = oEOS.getEmbeddedObject();
+ XChartDocument xChart = (XChartDocument) UnoRuntime.queryInterface(XChartDocument.class,oInt);
+ XDiagram oDiag = (XDiagram) xChart.getDiagram();
+ System.out.println("Change Diagramm to 3D");
+ XPropertySet oCPS = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, oDiag );
+ oCPS.setPropertyValue("Dim3D", new Boolean(true));
+ System.out.println("Change the title");
+ Thread.sleep(200);
+ XPropertySet oTPS = (XPropertySet)UnoRuntime.queryInterface(
+ XPropertySet.class, xChart.getTitle() );
+ oTPS.setPropertyValue("String","The new title");
+ //oDiag.Dim3D();
+ } catch (Exception e){
+ System.out.println("Changin Properties failed "+e);
+ }
+
+
+
+ System.out.println("done");
+
+ System.exit(0);
+
+
+ } // finish method main
+
+ public static XMultiServiceFactory connect( String connectStr )
+ throws com.sun.star.uno.Exception,
+ com.sun.star.uno.RuntimeException, Exception {
+
+ // Get component context
+ XComponentContext xcomponentcontext =
+ com.sun.star.comp.helper.Bootstrap.createInitialComponentContext(
+ null );
+
+ // initial serviceManager
+ XMultiComponentFactory xLocalServiceManager =
+ xcomponentcontext.getServiceManager();
+
+ // create a connector, so that it can contact the office
+ Object xUrlResolver = xLocalServiceManager.createInstanceWithContext(
+ "com.sun.star.bridge.UnoUrlResolver", xcomponentcontext );
+ XUnoUrlResolver urlResolver = (XUnoUrlResolver)UnoRuntime.queryInterface(
+ XUnoUrlResolver.class, xUrlResolver );
+
+ Object rInitialObject = urlResolver.resolve( connectStr );
+
+ XNamingService rName = (XNamingService)UnoRuntime.queryInterface(
+ XNamingService.class, rInitialObject );
+
+ XMultiServiceFactory xMSF = null;
+ if( rName != null ) {
+ System.err.println( "got the remote naming service !" );
+ Object rXsmgr = rName.getRegisteredObject("StarOffice.ServiceManager" );
+
+ xMSF = (XMultiServiceFactory)
+ UnoRuntime.queryInterface( XMultiServiceFactory.class, rXsmgr );
+ }
+
+ return ( xMSF );
+ }
+
+
+ public static XSpreadsheetDocument openCalc(XMultiServiceFactory oMSF) {
+
+ //define variables
+ XInterface oInterface;
+ XDesktop oDesktop;
+ XComponentLoader oCLoader;
+ XSpreadsheetDocument oDoc = null;
+ XComponent aDoc = null;
+
+ try {
+
+ oInterface = (XInterface) oMSF.createInstance( "com.sun.star.frame.Desktop" );
+ oDesktop = ( XDesktop ) UnoRuntime.queryInterface( XDesktop.class, oInterface );
+ oCLoader = ( XComponentLoader ) UnoRuntime.queryInterface( XComponentLoader.class, oDesktop );
+ PropertyValue [] szEmptyArgs = new PropertyValue [0];
+ String doc = "private:factory/scalc";
+ aDoc = oCLoader.loadComponentFromURL(doc, "_blank", 0, szEmptyArgs );
+ oDoc = (XSpreadsheetDocument) UnoRuntime.queryInterface(XSpreadsheetDocument.class, aDoc);
+
+ } // end of try
+
+ catch(Exception e){
+
+ System.out.println(" Exception " + e);
+
+ } // end of catch
+
+
+ return oDoc;
+ }//end of openCalc
+
+
+ public static void insertIntoCell(int CellX, int CellY, String theValue, XSpreadsheet TT1, String flag) {
+
+ XCell oCell = null;
+
+ try {
+ oCell = TT1.getCellByPosition(CellX, CellY);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException ex) {
+ System.out.println("Could not get Cell");
+ }
+ if (flag.equals("V")) {oCell.setValue((new Float(theValue)).floatValue());}
+ else {oCell.setFormula(theValue);}
+
+ } // end of insertIntoCell
+
+ public static void chgbColor( int x1, int y1, int x2, int y2, String template, XSpreadsheet TT ) {
+ XCellRange xCR = null;
+ try {
+ xCR = TT.getCellRangeByPosition(x1,y1,x2,y2);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException ex) {
+ System.out.println("Could not get CellRange");
+ }
+ XPropertySet oCPS = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, xCR );
+
+ try {
+ oCPS.setPropertyValue("CellStyle", template);
+ } catch (Exception e) {
+
+ System.out.println("Can't change colors chgbColor" + e);
+
+ }
+
+
+ }
+
+} // finish class SCalc