Skip to content


MOSS 2007 ECS (Excel Calculation Services) and Java (JAX-WS)

What the??

For those unfamiliar, the Enterprise Edition of Microsoft Office Sharepoint Server (MOSS) has an embedded MS-Excel engine which allows you to host Excel Spreadsheets on MOSS and have it be a hosted calculation engine, using an Excel Spreadsheet as its driving logic.  Further more, this excel spreadsheet can be exposed to the network over a SOAP based web service.

This permits you to access business logic stored within Excel from a traditional Java based web application.  An important concept if you are working with legacy formula’s or have a relatively low value problem that doesn’t wish to incur the cost of duplicating business logic in Java.

(Of course, this sidesteps the considerable cost (in some cases) of MOSS.  Best you check with your organisations MS agreement to see what it’s going to cost).

There are an number of ingredients in the process.

  1. You’ll need Sharepoint setup and configured
  2. You’ll need to configure up Excel Calculation Services on sharepoint
  3. You’ll need to clean up your spreadsheet to make it ECS compatible
  4. You’ll need to construct a Java client for talking to the Spreadsheet.

Getting Sharepoint running.

For my work, I took evaluation copies of

  • VMWare
  • MOSS 2007 Enterprise CAL  (See this product comparison spreadsheet and the Business intelligence tab within it).
  • MS Windows Server 2008

And I followed the instructions located here:

http://blogs.msdn.com/andreww/archive/2009/04/21/excel-services-setup-and-getting-started.aspx

The only additional rule to make the system work from outside was a change to the Windows Firewall to permit incoming TCP connections to the port that the Sharepoint website gets created on.

Cleaning up the Excel Spreadsheet

Excel Calculation Services is not compatible with all the features that are in MS Excel spreadsheets, specifically

  • Sheet protection
  • Data Validation
  • Comments
  • Shapes (Images, arrows, text boxes)
  • VBA (Macros)

You need to clean up the spreadsheet prior to loading it, and verify that your cleaning has been successful by “Viewing the file in Web Browser”.

To clean up the spreadsheet, you need to

  1. Unprotect all worksheets in the spreadsheet.
  2. Add this macro to the file, and run it to clean up comments and shapes
  3. Select all cells in any worksheet with data validation (drop boxes!) and delete the data validation.
  4. Save as a normal excel Spreadsheet (not the Macro enabled version) this cleans up the VBA you used to delete the other objects.

To publish the spreadsheet, select that stupid microsoft circle, then select ‘Publish’ and ‘Excel Web Services’ then pick the server details.

After it is published, it should open a web browser in web view, If it is successfully rendered in HTML, then it is ready for access over the web service.

The Java Client

My test client were created using using Netbeans 6.7 and its JAX-WS support, basically it consists of

  1. Consuming the WSDL for the Excel Data Services within netbeans (background information here and MS reference info here) and generating code
  2. Modifying your client to use the appropriate NTLM authentication details.

Inserting the calls to each web service  (right click in the main method, and select “Insert code” then “Call webservices operation” and then pick your call.

The basic steps you need to follow are:

  1. Open the workbook and obtain a session ID
  2. Add 1 to n values to either numbered cells (setCellA), or named cells (setCellA1) OR more efficiently, call setRangeA1 and muck around with Arrays.
  3. Call calculate on the worksheet
  4. Close the worksheet.

And that’s it!

Here is some sample code

Below is the minimal case using ranges.


public static void main(String[] args) {
MyAuthenticator myAuth = new MyAuthenticator("dontfreakout\\administrator", "mr31#UE");
Authenticator.setDefault(myAuth);

String sessionId = "";

try { // Call Web Service Operation
com.microsoft.schemas.office.excel.server.webservices.ExcelService service = new com.microsoft.schemas.office.excel.server.webservices.ExcelService();
com.microsoft.schemas.office.excel.server.webservices.ExcelServiceSoap port = service.getExcelServiceSoap12();
// TODO initialize WS operation arguments here
java.lang.String workbookPath = "http://win-0v6f2x2aun4:32089/sites/phoenix2/Rating%20engine/Phoenix%20Strata.xlsx";
java.lang.String uiCultureName = "";
java.lang.String dataCultureName = "";
javax.xml.ws.Holder<java.lang.String> openWorkbookResult = new javax.xml.ws.Holder<java.lang.String>();
javax.xml.ws.Holder<com.microsoft.schemas.office.excel.server.webservices.ArrayOfStatus> status = new javax.xml.ws.Holder<com.microsoft.schemas.office.excel.server.webservices.ArrayOfStatus>();
port.openWorkbook(workbookPath, uiCultureName, dataCultureName, openWorkbookResult, status);

sessionId = openWorkbookResult.value;
} catch (Exception ex) {
// TODO handle custom exceptions here
}

try { // Call Web Service Operation
com.microsoft.schemas.office.excel.server.webservices.ExcelService service = new com.microsoft.schemas.office.excel.server.webservices.ExcelService();
com.microsoft.schemas.office.excel.server.webservices.ExcelServiceSoap port = service.getExcelServiceSoap12();
// TODO initialize WS operation arguments here
java.lang.String sheetName = "Phoenix";
java.lang.String rangeName = "INPUTS";
com.microsoft.schemas.office.excel.server.webservices.ArrayOfAnyType rangeValues = new com.microsoft.schemas.office.excel.server.webservices.ArrayOfAnyType();

/*  Now we set all the values in the range by adding them to the list, basically its a top down table.
*/
rangeValues.getAnyType().add("01/01/2009");
rangeValues.getAnyType().add("31/12/2009");
rangeValues.getAnyType().add("My Policy Number");
rangeValues.getAnyType().add("Strata number");
rangeValues.getAnyType().add("3000");
rangeValues.getAnyType().add("20000000");
rangeValues.getAnyType().add("Non Brick");
rangeValues.getAnyType().add("20");
rangeValues.getAnyType().add("2");
rangeValues.getAnyType().add("YES");
rangeValues.getAnyType().add("15000000");
rangeValues.getAnyType().add("0");
rangeValues.getAnyType().add("2000");
rangeValues.getAnyType().add("1");
rangeValues.getAnyType().add("2");
rangeValues.getAnyType().add("10000000");
rangeValues.getAnyType().add("2");
rangeValues.getAnyType().add("4000000");
com.microsoft.schemas.office.excel.server.webservices.ArrayOfStatus result = port.setRangeA1(sessionId, sheetName, rangeName, rangeValues);
System.out.println("Result = " + result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}

/*
* You also now need to explicitly call calc on the spreadsheet, so your updates now have an outcome.
*/
try { // Call Web Service Operation
com.microsoft.schemas.office.excel.server.webservices.ExcelService service = new com.microsoft.schemas.office.excel.server.webservices.ExcelService();
com.microsoft.schemas.office.excel.server.webservices.ExcelServiceSoap port = service.getExcelServiceSoap12();
// TODO initialize WS operation arguments here
com.microsoft.schemas.office.excel.server.webservices.CalculateType calculateType = null;
// TODO process result here
com.microsoft.schemas.office.excel.server.webservices.ArrayOfStatus result = port.calculateWorkbook(sessionId, calculateType);
System.out.println("Result = " + result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}

try { // Call Web Service Operation
com.microsoft.schemas.office.excel.server.webservices.ExcelService service = new com.microsoft.schemas.office.excel.server.webservices.ExcelService();
com.microsoft.schemas.office.excel.server.webservices.ExcelServiceSoap port = service.getExcelServiceSoap12();
// TODO initialize WS operation arguments here
java.lang.String sheetName = "Phoenix";
java.lang.String rangeName = "ALL_TOTALS";
boolean formatted = false;
javax.xml.ws.Holder<com.microsoft.schemas.office.excel.server.webservices.ArrayOfAnyType> getRangeA1Result = new javax.xml.ws.Holder<com.microsoft.schemas.office.excel.server.webservices.ArrayOfAnyType>();
javax.xml.ws.Holder<com.microsoft.schemas.office.excel.server.webservices.ArrayOfStatus> status = new javax.xml.ws.Holder<com.microsoft.schemas.office.excel.server.webservices.ArrayOfStatus>();
port.getRangeA1(sessionId, sheetName, rangeName, formatted, getRangeA1Result, status);

/*  It gets funky here as we are handling of a two dimensional array response (as the totals result is a 2d grid)
*
*  It's top to down, left to right
*/

Iterator i = getRangeA1Result.value.getAnyType().iterator();
while (i.hasNext()) {

Iterator j = ((ArrayOfAnyType)i.next()).getAnyType().iterator();
while (j.hasNext()) {
System.out.println(j.next());
}
}
System.out.println("Finished");
} catch (Exception ex) {
ex.printStackTrace();
}

}

Below is the minimal case setting cells one by one, you’ll need the supporting libraries of course and the code generated, best to open the project.


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package sharepointtest1;

import java.net.Authenticator;

/**
*
* @author sherod
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {

/*
* This is a custom authenticator to override what java does on your machine by default.
* What it does, by default, is pass the authenticated windows user who is running the program
* when it is challenged by sharepoint for NTLM credentials.
*
* Adding a custom authenticator here allows you to inject different credentials, to cheat, I've justed the
* administrator details for the Virtual machine, they have admin rights to Sharepoint.
*/
MyAuthenticator myAuth = new MyAuthenticator("dontfreakout\\administrator", "password");
Authenticator.setDefault(myAuth);

String sessionId = "";

/* Open the workbook.  Note the path to the location of the workbook inside sharepoint
* also note the way we get back the sessionId, you'll need this to maintain state for the subsequent webservices calls
*/

try { // Call Web Service Operation
com.microsoft.schemas.office.excel.server.webservices.ExcelService service = new com.microsoft.schemas.office.excel.server.webservices.ExcelService();
com.microsoft.schemas.office.excel.server.webservices.ExcelServiceSoap port = service.getExcelServiceSoap12();
// TODO initialize WS operation arguments here
java.lang.String workbookPath = "http://win-0v6f2x2aun4:32089/sites/testsite/Test%20library/Simple%20spreadsheet.xlsb";
java.lang.String uiCultureName = "";
java.lang.String dataCultureName = "";
javax.xml.ws.Holder<java.lang.String> openWorkbookResult = new javax.xml.ws.Holder<java.lang.String>();
javax.xml.ws.Holder<com.microsoft.schemas.office.excel.server.webservices.ArrayOfStatus> status = new javax.xml.ws.Holder<com.microsoft.schemas.office.excel.server.webservices.ArrayOfStatus>();
port.openWorkbook(workbookPath, uiCultureName, dataCultureName, openWorkbookResult, status);

sessionId = openWorkbookResult.value;
} catch (Exception ex) {
// TODO handle custom exceptions here
}

System.out.println("Session ID?:" + sessionId);

/* Now we make the setCellA1 call to place values into the spreadsheet.
* Note this is using the named ranges approach, note the name of the Sheet1 and the range.
*
* You could also use setCell, and use x/y coordinates.
*/

try { // Call Web Service Operation
com.microsoft.schemas.office.excel.server.webservices.ExcelService service = new com.microsoft.schemas.office.excel.server.webservices.ExcelService();
com.microsoft.schemas.office.excel.server.webservices.ExcelServiceSoap port = service.getExcelServiceSoap12();
// TODO initialize WS operation arguments here
java.lang.String sheetName = "Sheet1";
java.lang.String rangeName = "Sales";
java.lang.Object cellValue = new Integer(1000000);
// TODO process result here
com.microsoft.schemas.office.excel.server.webservices.ArrayOfStatus result = port.setCellA1(sessionId, sheetName, rangeName, cellValue);
System.out.println("Result = "+result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}

try { // Call Web Service Operation
com.microsoft.schemas.office.excel.server.webservices.ExcelService service = new com.microsoft.schemas.office.excel.server.webservices.ExcelService();
com.microsoft.schemas.office.excel.server.webservices.ExcelServiceSoap port = service.getExcelServiceSoap12();
// TODO initialize WS operation arguments here
java.lang.String sheetName = "Sheet1";
java.lang.String rangeName = "Costs";
java.lang.Object cellValue = new Integer(860000);
// TODO process result here
com.microsoft.schemas.office.excel.server.webservices.ArrayOfStatus result = port.setCellA1(sessionId, sheetName, rangeName, cellValue);
System.out.println("Result = "+result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}

/*
* You also now need to explicitly call calc on the spreadsheet, so your updates now have an outcome.
*/
try { // Call Web Service Operation
com.microsoft.schemas.office.excel.server.webservices.ExcelService service = new com.microsoft.schemas.office.excel.server.webservices.ExcelService();
com.microsoft.schemas.office.excel.server.webservices.ExcelServiceSoap port = service.getExcelServiceSoap12();
// TODO initialize WS operation arguments here
com.microsoft.schemas.office.excel.server.webservices.CalculateType calculateType = null;
// TODO process result here
com.microsoft.schemas.office.excel.server.webservices.ArrayOfStatus result = port.calculateWorkbook(sessionId, calculateType);
System.out.println("Result = "+result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}

/*
* Now read the result, from a named cell.  In this case, we use its excel generated name of C4 (not like the cell settings
*/
try { // Call Web Service Operation
com.microsoft.schemas.office.excel.server.webservices.ExcelService service = new com.microsoft.schemas.office.excel.server.webservices.ExcelService();
com.microsoft.schemas.office.excel.server.webservices.ExcelServiceSoap port = service.getExcelServiceSoap12();
// TODO initialize WS operation arguments here
java.lang.String sheetName = "Sheet1";
java.lang.String rangeName = "C4";
boolean formatted = false;
javax.xml.ws.Holder<java.lang.Object> getCellA1Result = new javax.xml.ws.Holder<java.lang.Object>();
javax.xml.ws.Holder<com.microsoft.schemas.office.excel.server.webservices.ArrayOfStatus> status = new javax.xml.ws.Holder<com.microsoft.schemas.office.excel.server.webservices.ArrayOfStatus>();
port.getCellA1(sessionId, sheetName, rangeName, formatted, getCellA1Result, status);

System.out.println("\n******\nResult:" + getCellA1Result.value + "\n********");
} catch (Exception ex) {
// TODO handle custom exceptions here
}

/*
* And Close
*/
try { // Call Web Service Operation
com.microsoft.schemas.office.excel.server.webservices.ExcelService service = new com.microsoft.schemas.office.excel.server.webservices.ExcelService();
com.microsoft.schemas.office.excel.server.webservices.ExcelServiceSoap port = service.getExcelServiceSoap12();
// TODO initialize WS operation arguments here
// TODO process result here
com.microsoft.schemas.office.excel.server.webservices.ArrayOfStatus result = port.closeWorkbook(sessionId);
System.out.println("Closed workbook");
} catch (Exception ex) {
// TODO handle custom exceptions here
}

}
}
And here is the WSDL that MOSS generates (you should use the one your site has generated, not this one!)
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 

xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" 

xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" 

xmlns:tns="http://schemas.microsoft.com/office/excel/server/webservices" 

xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" 

xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 

targetNamespace="http://schemas.microsoft.com/office/excel/server/webservices" 

xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
 <wsdl:types>
 <s:schema elementFormDefault="qualified" 

targetNamespace="http://schemas.microsoft.com/office/excel/server/webservices">
 <s:element name="GetApiVersion">
 <s:complexType />
 </s:element>
 <s:element name="GetApiVersionResponse">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="GetApiVersionResult" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="status" type="tns:ArrayOfStatus" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:complexType name="ArrayOfStatus">
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="unbounded" name="Status" nillable="true" type="tns:Status" />
 </s:sequence>
 </s:complexType>
 <s:complexType name="Status">
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="Severity" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="Message" type="s:string" />
 </s:sequence>
 </s:complexType>
 <s:element name="OpenWorkbook">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="workbookPath" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="uiCultureName" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="dataCultureName" type="s:string" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="OpenWorkbookResponse">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="OpenWorkbookResult" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="status" type="tns:ArrayOfStatus" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="CloseWorkbook">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="CloseWorkbookResponse">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="status" type="tns:ArrayOfStatus" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="Refresh">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="connectionName" type="s:string" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="RefreshResponse">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="status" type="tns:ArrayOfStatus" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="Calculate">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="sheetName" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="rangeCoordinates" type="tns:RangeCoordinates" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:complexType name="RangeCoordinates">
 <s:sequence>
 <s:element minOccurs="1" maxOccurs="1" name="Row" type="s:int" />
 <s:element minOccurs="1" maxOccurs="1" name="Column" type="s:int" />
 <s:element minOccurs="1" maxOccurs="1" name="Height" type="s:int" />
 <s:element minOccurs="1" maxOccurs="1" name="Width" type="s:int" />
 </s:sequence>
 </s:complexType>
 <s:element name="CalculateResponse">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="status" type="tns:ArrayOfStatus" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="CalculateA1">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="sheetName" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="rangeName" type="s:string" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="CalculateA1Response">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="status" type="tns:ArrayOfStatus" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="GetRange">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="sheetName" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="rangeCoordinates" type="tns:RangeCoordinates" />
 <s:element minOccurs="1" maxOccurs="1" name="formatted" type="s:boolean" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="GetRangeResponse">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="GetRangeResult" type="tns:ArrayOfAnyType" />
 <s:element minOccurs="0" maxOccurs="1" name="status" type="tns:ArrayOfStatus" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:complexType name="ArrayOfAnyType">
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="unbounded" name="anyType" nillable="true" />
 </s:sequence>
 </s:complexType>
 <s:complexType name="TypeExporter">
 <s:sequence>
 <s:element minOccurs="1" maxOccurs="1" name="CellError" type="tns:CellError" />
 </s:sequence>
 </s:complexType>
 <s:simpleType name="CellError">
 <s:restriction base="s:string">
 <s:enumeration value="Div0" />
 <s:enumeration value="NA" />
 <s:enumeration value="Name" />
 <s:enumeration value="Null" />
 <s:enumeration value="Num" />
 <s:enumeration value="Ref" />
 <s:enumeration value="Value" />
 </s:restriction>
 </s:simpleType>
 <s:element name="GetRangeA1">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="sheetName" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="rangeName" type="s:string" />
 <s:element minOccurs="1" maxOccurs="1" name="formatted" type="s:boolean" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="GetRangeA1Response">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="GetRangeA1Result" type="tns:ArrayOfAnyType" />
 <s:element minOccurs="0" maxOccurs="1" name="status" type="tns:ArrayOfStatus" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="GetCell">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="sheetName" type="s:string" />
 <s:element minOccurs="1" maxOccurs="1" name="row" type="s:int" />
 <s:element minOccurs="1" maxOccurs="1" name="column" type="s:int" />
 <s:element minOccurs="1" maxOccurs="1" name="formatted" type="s:boolean" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="GetCellResponse">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="GetCellResult" />
 <s:element minOccurs="0" maxOccurs="1" name="status" type="tns:ArrayOfStatus" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="GetCellA1">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="sheetName" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="rangeName" type="s:string" />
 <s:element minOccurs="1" maxOccurs="1" name="formatted" type="s:boolean" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="GetCellA1Response">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="GetCellA1Result" />
 <s:element minOccurs="0" maxOccurs="1" name="status" type="tns:ArrayOfStatus" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="SetRange">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="sheetName" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="rangeCoordinates" type="tns:RangeCoordinates" />
 <s:element minOccurs="0" maxOccurs="1" name="rangeValues" type="tns:ArrayOfAnyType" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="SetRangeResponse">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="status" type="tns:ArrayOfStatus" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="SetRangeA1">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="sheetName" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="rangeName" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="rangeValues" type="tns:ArrayOfAnyType" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="SetRangeA1Response">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="status" type="tns:ArrayOfStatus" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="SetCell">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="sheetName" type="s:string" />
 <s:element minOccurs="1" maxOccurs="1" name="row" type="s:int" />
 <s:element minOccurs="1" maxOccurs="1" name="column" type="s:int" />
 <s:element minOccurs="0" maxOccurs="1" name="cellValue" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="SetCellResponse">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="status" type="tns:ArrayOfStatus" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="SetCellA1">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="sheetName" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="rangeName" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="cellValue" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="SetCellA1Response">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="status" type="tns:ArrayOfStatus" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="CalculateWorkbook">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
 <s:element minOccurs="1" maxOccurs="1" name="calculateType" type="tns:CalculateType" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:simpleType name="CalculateType">
 <s:restriction base="s:string">
 <s:enumeration value="Recalculate" />
 <s:enumeration value="CalculateFull" />
 </s:restriction>
 </s:simpleType>
 <s:element name="CalculateWorkbookResponse">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="status" type="tns:ArrayOfStatus" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="GetSessionInformation">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="GetSessionInformationResponse">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="serverVersion" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="uiCultureNameUsed" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="dataCultureNameUsed" type="s:string" />
 <s:element minOccurs="0" maxOccurs="1" name="status" type="tns:ArrayOfStatus" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="CancelRequest">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="CancelRequestResponse">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="status" type="tns:ArrayOfStatus" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:element name="GetWorkbook">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
 <s:element minOccurs="1" maxOccurs="1" name="workbookType" type="tns:WorkbookType" />
 </s:sequence>
 </s:complexType>
 </s:element>
 <s:simpleType name="WorkbookType">
 <s:restriction base="s:string">
 <s:enumeration value="FullWorkbook" />
 <s:enumeration value="FullSnapshot" />
 <s:enumeration value="PublishedItemsSnapshot" />
 </s:restriction>
 </s:simpleType>
 <s:element name="GetWorkbookResponse">
 <s:complexType>
 <s:sequence>
 <s:element minOccurs="0" maxOccurs="1" name="GetWorkbookResult" type="s:base64Binary" />
 <s:element minOccurs="0" maxOccurs="1" name="status" type="tns:ArrayOfStatus" />
 </s:sequence>
 </s:complexType>
 </s:element>
 </s:schema>
 </wsdl:types>
 <wsdl:message name="GetApiVersionSoapIn">
 <wsdl:part name="parameters" element="tns:GetApiVersion" />
 </wsdl:message>
 <wsdl:message name="GetApiVersionSoapOut">
 <wsdl:part name="parameters" element="tns:GetApiVersionResponse" />
 </wsdl:message>
 <wsdl:message name="OpenWorkbookSoapIn">
 <wsdl:part name="parameters" element="tns:OpenWorkbook" />
 </wsdl:message>
 <wsdl:message name="OpenWorkbookSoapOut">
 <wsdl:part name="parameters" element="tns:OpenWorkbookResponse" />
 </wsdl:message>
 <wsdl:message name="CloseWorkbookSoapIn">
 <wsdl:part name="parameters" element="tns:CloseWorkbook" />
 </wsdl:message>
 <wsdl:message name="CloseWorkbookSoapOut">
 <wsdl:part name="parameters" element="tns:CloseWorkbookResponse" />
 </wsdl:message>
 <wsdl:message name="RefreshSoapIn">
 <wsdl:part name="parameters" element="tns:Refresh" />
 </wsdl:message>
 <wsdl:message name="RefreshSoapOut">
 <wsdl:part name="parameters" element="tns:RefreshResponse" />
 </wsdl:message>
 <wsdl:message name="CalculateSoapIn">
 <wsdl:part name="parameters" element="tns:Calculate" />
 </wsdl:message>
 <wsdl:message name="CalculateSoapOut">
 <wsdl:part name="parameters" element="tns:CalculateResponse" />
 </wsdl:message>
 <wsdl:message name="CalculateA1SoapIn">
 <wsdl:part name="parameters" element="tns:CalculateA1" />
 </wsdl:message>
 <wsdl:message name="CalculateA1SoapOut">
 <wsdl:part name="parameters" element="tns:CalculateA1Response" />
 </wsdl:message>
 <wsdl:message name="GetRangeSoapIn">
 <wsdl:part name="parameters" element="tns:GetRange" />
 </wsdl:message>
 <wsdl:message name="GetRangeSoapOut">
 <wsdl:part name="parameters" element="tns:GetRangeResponse" />
 </wsdl:message>
 <wsdl:message name="GetRangeA1SoapIn">
 <wsdl:part name="parameters" element="tns:GetRangeA1" />
 </wsdl:message>
 <wsdl:message name="GetRangeA1SoapOut">
 <wsdl:part name="parameters" element="tns:GetRangeA1Response" />
 </wsdl:message>
 <wsdl:message name="GetCellSoapIn">
 <wsdl:part name="parameters" element="tns:GetCell" />
 </wsdl:message>
 <wsdl:message name="GetCellSoapOut">
 <wsdl:part name="parameters" element="tns:GetCellResponse" />
 </wsdl:message>
 <wsdl:message name="GetCellA1SoapIn">
 <wsdl:part name="parameters" element="tns:GetCellA1" />
 </wsdl:message>
 <wsdl:message name="GetCellA1SoapOut">
 <wsdl:part name="parameters" element="tns:GetCellA1Response" />
 </wsdl:message>
 <wsdl:message name="SetRangeSoapIn">
 <wsdl:part name="parameters" element="tns:SetRange" />
 </wsdl:message>
 <wsdl:message name="SetRangeSoapOut">
 <wsdl:part name="parameters" element="tns:SetRangeResponse" />
 </wsdl:message>
 <wsdl:message name="SetRangeA1SoapIn">
 <wsdl:part name="parameters" element="tns:SetRangeA1" />
 </wsdl:message>
 <wsdl:message name="SetRangeA1SoapOut">
 <wsdl:part name="parameters" element="tns:SetRangeA1Response" />
 </wsdl:message>
 <wsdl:message name="SetCellSoapIn">
 <wsdl:part name="parameters" element="tns:SetCell" />
 </wsdl:message>
 <wsdl:message name="SetCellSoapOut">
 <wsdl:part name="parameters" element="tns:SetCellResponse" />
 </wsdl:message>
 <wsdl:message name="SetCellA1SoapIn">
 <wsdl:part name="parameters" element="tns:SetCellA1" />
 </wsdl:message>
 <wsdl:message name="SetCellA1SoapOut">
 <wsdl:part name="parameters" element="tns:SetCellA1Response" />
 </wsdl:message>
 <wsdl:message name="CalculateWorkbookSoapIn">
 <wsdl:part name="parameters" element="tns:CalculateWorkbook" />
 </wsdl:message>
 <wsdl:message name="CalculateWorkbookSoapOut">
 <wsdl:part name="parameters" element="tns:CalculateWorkbookResponse" />
 </wsdl:message>
 <wsdl:message name="GetSessionInformationSoapIn">
 <wsdl:part name="parameters" element="tns:GetSessionInformation" />
 </wsdl:message>
 <wsdl:message name="GetSessionInformationSoapOut">
 <wsdl:part name="parameters" element="tns:GetSessionInformationResponse" />
 </wsdl:message>
 <wsdl:message name="CancelRequestSoapIn">
 <wsdl:part name="parameters" element="tns:CancelRequest" />
 </wsdl:message>
 <wsdl:message name="CancelRequestSoapOut">
 <wsdl:part name="parameters" element="tns:CancelRequestResponse" />
 </wsdl:message>
 <wsdl:message name="GetWorkbookSoapIn">
 <wsdl:part name="parameters" element="tns:GetWorkbook" />
 </wsdl:message>
 <wsdl:message name="GetWorkbookSoapOut">
 <wsdl:part name="parameters" element="tns:GetWorkbookResponse" />
 </wsdl:message>
 <wsdl:portType name="ExcelServiceSoap">
 <wsdl:operation name="GetApiVersion">
 <wsdl:input message="tns:GetApiVersionSoapIn" />
 <wsdl:output message="tns:GetApiVersionSoapOut" />
 </wsdl:operation>
 <wsdl:operation name="OpenWorkbook">
 <wsdl:input message="tns:OpenWorkbookSoapIn" />
 <wsdl:output message="tns:OpenWorkbookSoapOut" />
 </wsdl:operation>
 <wsdl:operation name="CloseWorkbook">
 <wsdl:input message="tns:CloseWorkbookSoapIn" />
 <wsdl:output message="tns:CloseWorkbookSoapOut" />
 </wsdl:operation>
 <wsdl:operation name="Refresh">
 <wsdl:input message="tns:RefreshSoapIn" />
 <wsdl:output message="tns:RefreshSoapOut" />
 </wsdl:operation>
 <wsdl:operation name="Calculate">
 <wsdl:input message="tns:CalculateSoapIn" />
 <wsdl:output message="tns:CalculateSoapOut" />
 </wsdl:operation>
 <wsdl:operation name="CalculateA1">
 <wsdl:input message="tns:CalculateA1SoapIn" />
 <wsdl:output message="tns:CalculateA1SoapOut" />
 </wsdl:operation>
 <wsdl:operation name="GetRange">
 <wsdl:input message="tns:GetRangeSoapIn" />
 <wsdl:output message="tns:GetRangeSoapOut" />
 </wsdl:operation>
 <wsdl:operation name="GetRangeA1">
 <wsdl:input message="tns:GetRangeA1SoapIn" />
 <wsdl:output message="tns:GetRangeA1SoapOut" />
 </wsdl:operation>
 <wsdl:operation name="GetCell">
 <wsdl:input message="tns:GetCellSoapIn" />
 <wsdl:output message="tns:GetCellSoapOut" />
 </wsdl:operation>
 <wsdl:operation name="GetCellA1">
 <wsdl:input message="tns:GetCellA1SoapIn" />
 <wsdl:output message="tns:GetCellA1SoapOut" />
 </wsdl:operation>
 <wsdl:operation name="SetRange">
 <wsdl:input message="tns:SetRangeSoapIn" />
 <wsdl:output message="tns:SetRangeSoapOut" />
 </wsdl:operation>
 <wsdl:operation name="SetRangeA1">
 <wsdl:input message="tns:SetRangeA1SoapIn" />
 <wsdl:output message="tns:SetRangeA1SoapOut" />
 </wsdl:operation>
 <wsdl:operation name="SetCell">
 <wsdl:input message="tns:SetCellSoapIn" />
 <wsdl:output message="tns:SetCellSoapOut" />
 </wsdl:operation>
 <wsdl:operation name="SetCellA1">
 <wsdl:input message="tns:SetCellA1SoapIn" />
 <wsdl:output message="tns:SetCellA1SoapOut" />
 </wsdl:operation>
 <wsdl:operation name="CalculateWorkbook">
 <wsdl:input message="tns:CalculateWorkbookSoapIn" />
 <wsdl:output message="tns:CalculateWorkbookSoapOut" />
 </wsdl:operation>
 <wsdl:operation name="GetSessionInformation">
 <wsdl:input message="tns:GetSessionInformationSoapIn" />
 <wsdl:output message="tns:GetSessionInformationSoapOut" />
 </wsdl:operation>
 <wsdl:operation name="CancelRequest">
 <wsdl:input message="tns:CancelRequestSoapIn" />
 <wsdl:output message="tns:CancelRequestSoapOut" />
 </wsdl:operation>
 <wsdl:operation name="GetWorkbook">
 <wsdl:input message="tns:GetWorkbookSoapIn" />
 <wsdl:output message="tns:GetWorkbookSoapOut" />
 </wsdl:operation>
 </wsdl:portType>
 <wsdl:binding name="ExcelServiceSoap" type="tns:ExcelServiceSoap">
 <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
 <wsdl:operation name="GetApiVersion">
 <soap:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/GetApiVersion" 

style="document" />
 <wsdl:input>
 <soap:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="OpenWorkbook">
 <soap:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/OpenWorkbook" 

style="document" />
 <wsdl:input>
 <soap:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="CloseWorkbook">
 <soap:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/CloseWorkbook" 

style="document" />
 <wsdl:input>
 <soap:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="Refresh">
 <soap:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/Refresh" 

style="document" />
 <wsdl:input>
 <soap:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="Calculate">
 <soap:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/Calculate" 

style="document" />
 <wsdl:input>
 <soap:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="CalculateA1">
 <soap:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/CalculateA1" 

style="document" />
 <wsdl:input>
 <soap:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="GetRange">
 <soap:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/GetRange" 

style="document" />
 <wsdl:input>
 <soap:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="GetRangeA1">
 <soap:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/GetRangeA1" 

style="document" />
 <wsdl:input>
 <soap:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="GetCell">
 <soap:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/GetCell" 

style="document" />
 <wsdl:input>
 <soap:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="GetCellA1">
 <soap:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/GetCellA1" 

style="document" />
 <wsdl:input>
 <soap:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="SetRange">
 <soap:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/SetRange" 

style="document" />
 <wsdl:input>
 <soap:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="SetRangeA1">
 <soap:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/SetRangeA1" 

style="document" />
 <wsdl:input>
 <soap:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="SetCell">
 <soap:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/SetCell" 

style="document" />
 <wsdl:input>
 <soap:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="SetCellA1">
 <soap:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/SetCellA1" 

style="document" />
 <wsdl:input>
 <soap:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="CalculateWorkbook">
 <soap:operation 

soapAction="http://schemas.microsoft.com/office/excel/server/webservices/CalculateWorkbook" style="document" 

/>
 <wsdl:input>
 <soap:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="GetSessionInformation">
 <soap:operation 

soapAction="http://schemas.microsoft.com/office/excel/server/webservices/GetSessionInformation" 

style="document" />
 <wsdl:input>
 <soap:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="CancelRequest">
 <soap:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/CancelRequest" 

style="document" />
 <wsdl:input>
 <soap:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="GetWorkbook">
 <soap:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/GetWorkbook" 

style="document" />
 <wsdl:input>
 <soap:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 </wsdl:binding>
 <wsdl:binding name="ExcelServiceSoap12" type="tns:ExcelServiceSoap">
 <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
 <wsdl:operation name="GetApiVersion">
 <soap12:operation 

soapAction="http://schemas.microsoft.com/office/excel/server/webservices/GetApiVersion" style="document" />
 <wsdl:input>
 <soap12:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap12:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="OpenWorkbook">
 <soap12:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/OpenWorkbook" 

style="document" />
 <wsdl:input>
 <soap12:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap12:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="CloseWorkbook">
 <soap12:operation 

soapAction="http://schemas.microsoft.com/office/excel/server/webservices/CloseWorkbook" style="document" />
 <wsdl:input>
 <soap12:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap12:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="Refresh">
 <soap12:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/Refresh" 

style="document" />
 <wsdl:input>
 <soap12:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap12:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="Calculate">
 <soap12:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/Calculate" 

style="document" />
 <wsdl:input>
 <soap12:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap12:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="CalculateA1">
 <soap12:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/CalculateA1" 

style="document" />
 <wsdl:input>
 <soap12:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap12:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="GetRange">
 <soap12:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/GetRange" 

style="document" />
 <wsdl:input>
 <soap12:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap12:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="GetRangeA1">
 <soap12:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/GetRangeA1" 

style="document" />
 <wsdl:input>
 <soap12:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap12:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="GetCell">
 <soap12:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/GetCell" 

style="document" />
 <wsdl:input>
 <soap12:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap12:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="GetCellA1">
 <soap12:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/GetCellA1" 

style="document" />
 <wsdl:input>
 <soap12:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap12:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="SetRange">
 <soap12:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/SetRange" 

style="document" />
 <wsdl:input>
 <soap12:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap12:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="SetRangeA1">
 <soap12:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/SetRangeA1" 

style="document" />
 <wsdl:input>
 <soap12:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap12:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="SetCell">
 <soap12:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/SetCell" 

style="document" />
 <wsdl:input>
 <soap12:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap12:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="SetCellA1">
 <soap12:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/SetCellA1" 

style="document" />
 <wsdl:input>
 <soap12:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap12:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="CalculateWorkbook">
 <soap12:operation 

soapAction="http://schemas.microsoft.com/office/excel/server/webservices/CalculateWorkbook" style="document" 

/>
 <wsdl:input>
 <soap12:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap12:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="GetSessionInformation">
 <soap12:operation 

soapAction="http://schemas.microsoft.com/office/excel/server/webservices/GetSessionInformation" 

style="document" />
 <wsdl:input>
 <soap12:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap12:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="CancelRequest">
 <soap12:operation 

soapAction="http://schemas.microsoft.com/office/excel/server/webservices/CancelRequest" style="document" />
 <wsdl:input>
 <soap12:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap12:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 <wsdl:operation name="GetWorkbook">
 <soap12:operation soapAction="http://schemas.microsoft.com/office/excel/server/webservices/GetWorkbook" 

style="document" />
 <wsdl:input>
 <soap12:body use="literal" />
 </wsdl:input>
 <wsdl:output>
 <soap12:body use="literal" />
 </wsdl:output>
 </wsdl:operation>
 </wsdl:binding>
 <wsdl:service name="ExcelService">
 <wsdl:port name="ExcelServiceSoap" binding="tns:ExcelServiceSoap">
 <soap:address location="http://win-0v6f2x2aun4:32089/sites/testsite/_vti_bin/ExcelService.asmx" />
 </wsdl:port>
 <wsdl:port name="ExcelServiceSoap12" binding="tns:ExcelServiceSoap12">
 <soap12:address location="http://win-0v6f2x2aun4:32089/sites/testsite/_vti_bin/ExcelService.asmx" />
 </wsdl:port>
 </wsdl:service>
</wsdl:definitions>

Posted in Tech.

0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

Some HTML is OK

(never shared)

or, reply to this post via trackback.