Partager via


Étape 3: accès au service Web

Une fois une référence à Services Web Excel ajoutée dans votre projet, l'étape suivante consiste à créer une instance de la classe proxy du service Web. Vous pouvez alors accéder aux méthodes du service Web en appelant les méthodes de la classe proxy. Lorsque votre application appelle ces méthodes, le code de la classe proxy généré par Visual Studio gère les communications entre votre application et le service Web.

Vous devez d'abord créer une instance de la classe proxy du service Web, ExcelWebService. Vous devez ensuite appeler plusieurs méthodes et propriétés du service Web utilisant la classe proxy.

Les appels servent à ouvrir un classeur, récupérer l'ID de session, transmettre les informations d'identification par défaut, définir l'objet de coordonnées de plage, récupérer la plage utilisant l'objet de coordonnées de plage, fermer le classeur et intercepter les exceptions SOAP.

Accès au service Web

Pour ajouter des directives

  1. Lorsque vous avez ajouté la référence Web, celle-ci a créé un objet appelé ExcelService dans un espace de noms <votreProjet>.<NomReferenceweb>. Dans cet exemple, l'objet s'appelle SampleApplication.ExcelWebService. Cette procédure pas à pas montre également comment intercepter des exceptions SOAP à l'aide de l'objet System.Web.Services.Protocols. L'espace de noms System.Web.Services.Protocols est composé des classes qui définissent les protocoles utilisés pour transmettre les données via le câble pendant la communication entre les clients des services Web XML et les services Web XML créés à l'aide d'ASP.NET. Pour faciliter l'utilisation de ces objets, vous devez d'abord ajouter les espaces de noms en tant que directives au fichier Class1.cs. Ainsi, vous n'aurez pas à qualifier complètement les types dans l'espace de noms.

  2. Pour ajouter ces directives, placez le code ci-après au début du code contenu dans le fichier Class1.cs, après using System:

    using SampleApplication.ExcelWebService;
    using System.Web.Services.Protocols;
    

Pour appeler le service Web

  1. Instanciez et initialisez l'objet proxy du service Web en ajoutant le code suivant après le crochet ouvrant dans static void Main(string[] args) :

    ExcelService es = new ExcelService();
    
  2. Ajoutez le code suivant pour créer un tableau d'états et des objets de coordonnées de plage :

    Status[] outStatus;
    RangeCoordinates rangeCoordinates = new RangeCoordinates();
    
  3. Ajoutez le code permettant de pointer vers la feuille de calcul à laquelle vous souhaitez accéder. Dans cet exemple, le feuille de calcul est appelée « Sheet1 ». Ajoutez les éléments suivants au code :

    string sheetName = "Sheet1";
    

    Notes

    Vérifiez que le classeur que vous souhaitez ouvrir comporte une feuille de calcul « Sheet1 » avec des valeurs. Vous pouvez également remplacer « Sheet1 » dans le code par le nom de votre feuille de calcul.

  4. Add the following code to point to the workbook you want to open:

    string targetWorkbookPath = "http://myserver02/example/Shared%20Documents/Book1.xlsx";
    

    Important

    Remplacez le chemin d'accès au classeur par celui du classeur utilisé dans cette procédure pas à pas. Vérifiez que le classeur existe et que son emplacement d'enregistrement est approuvé. Si vous utilisez une URL HTTP qui pointe vers l'emplacement du classeur, vous pouvez y avoir accès à distance.

    Notes

    Vous pouvez récupérer le chemin d'accès à un classeur dans Microsoft Office SharePoint Server 2007 en cliquant avec le bouton droit sur un classeur et en sélectionnant Copier le raccourci. Vous pouvez également sélectionner l'option Propriétés et copier le chemin d'accès au classeur à partir de cet emplacement.

  5. Ajoutez le code ci-après pour définir les informations d'identification en vue de la demande de connexion.

    Notes

    Vous devez définir les informations d'identification de façon explicite même si vous envisagez d'utiliser les informations d'identification par défaut.

    es.Credentials = System.Net.CredentialCache.DefaultCredentials;
    
  6. Ajoutez le code ci-après pour ouvrir le classeur et pointer vers l'emplacement autorisé où il figure. Placez le code dans un bloc try :

    try
    {
    string sessionId = es.OpenWorkbook(targetWorkbookPath, "en-US", 
        "en-US", out outStatus);
    
  7. Ajoutez le code ci-après pour préparer un objet qui définisse les coordonnées de plage, puis appelez la méthode GetRange. Le code imprime également le nombre total de lignes de la plage et la valeur d'une plage spécifique.

    rangeCoordinates.Column = 3;
    rangeCoordinates.Row = 9;
    rangeCoordinates.Height = 18;
    rangeCoordinates.Width = 12;
    
    object[] rangeResult1 = es.GetRange(sessionId, sheetName,
        rangeCoordinates, false, out outStatus);
    Console.WriteLine("Total rows in range: " + rangeResult1.Length);
    Console.WriteLine("Value in range is: " + ((object[])rangeResult1[5])[2]);
    
  8. Ajoutez du code pour fermer le classeur et la session en cours. Placez également un crochet fermant à la fin du bloc try.

    Important

    Il est conseillé de fermer le classeur une fois la session terminée. Cela permet de fermer la session et de libérer des ressources.

    es.CloseWorkbook(sessionId);
    }
    
  9. Ajoutez un bloc catch pour intercepter l'exception SOAP et imprimer le message de l'exception :

    catch (SoapException e)
    {
        Console.WriteLine("SOAP Exception Message: {0}", e.Message);
    }
    

Code complet

L'exemple de code ci-après contient le code complet de l'exemple de fichier Class1.cs décrit dans les procédures précédentes.

Important

Apportez des modifications nécessaires au chemin d'accès du classeur, au nom de la feuille de calcul, etc.

using System;
using SampleApplication.ExcelWebService;
using System.Web.Services.Protocols;

namespace SampleApplication
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {            
            // Instantiate the Web service and create a status array object and range coordinate object
            ExcelService es = new ExcelService();
            Status[] outStatus;
            RangeCoordinates rangeCoordinates = new RangeCoordinates();
            
string sheetName = "Sheet1";
            // Using workbookPath this way will allow 
            // you to call the workbook remotely.
            // TODO: change the workbook path to 
            // point to workbook in a trusted location
            // that you have access to 
            string targetWorkbookPath = "http://myserver02/example/Shared%20Documents/Book1.xlsx";
//you can also use .xlsb files, for example, //"http://myserver02/example/Shared%20Documents/Book1.xlsb";

            // Set credentials for requests
            es.Credentials = System.Net.CredentialCache.DefaultCredentials;
            //Console.WriteLine("Cred: {0}", es.Credentials);
            try
            {
                // Call open workbook, and point to the trusted   
                // location of the workbook to open.
                string sessionId = es.OpenWorkbook(targetWorkbookPath, "en-US", "en-US", out outStatus);
                // Console.WriteLine("sessionID : {0}", sessionId);

                // Prepare object to define range coordinates
                // and the GetRange method.
                rangeCoordinates.Column = 3;
                rangeCoordinates.Row = 9;
                rangeCoordinates.Height = 18;
                rangeCoordinates.Width = 12;

                object[] rangeResult1 = es.GetRange(sessionId, sheetName, rangeCoordinates, false, out outStatus);
                Console.WriteLine("Total Rows in Range: " + rangeResult1.Length);
                Console.WriteLine("Value in range is: " + ((object[])rangeResult1[5])[3]); 
        
                // Close workbook. This also closes session.
                es.CloseWorkbook(sessionId);
            }
            catch (SoapException e)
            {
                Console.WriteLine("SOAP Exception Message: {0}", e.Message);
            }
            // catch (Exception e)
//            {
//                Console.WriteLine("Exception Message: {0}", e.Message);
//            }
//            Console.ReadLine();
        }
    }
}
     

Voir aussi

Autres ressources

Étape 1 : création du projet de client de service Web
Étape 2 : ajout d'une référence Web
Étape 4 : création et test de l'application
Procédure pas à pas : développement d'une application personnalisée à l'aide des services Web Excel
Accès à l'API SOAP
Procédure : approuver les emplacements des classeurs à l'aide de scripts