Partager via


Procédure : obtenir des valeurs de plages

Services Web Excel propose quatre méthodes pour obtenir des valeurs d'un classeur Excel : GetCell, GetCellA1, GetRange et GetRangeA1.

Les méthodes GetCell et GetCellA1 retournent la valeur d'une seule cellule. Si vous demandez la valeur de plusieurs cellules, par exemple en passant une référence de plage telle que « B1:E2 » ou une plage nommée contenant plusieurs cellules, votre méthode échoue. Si vous souhaitez récupérer les valeurs d'une plage de cellules, utilisez plutôt les méthodes GetRange et GetRangeA1.

Les méthodes portant le suffixe A1(GetCellA1 et GetRangeA1) utilise un système de coordonnées différent des autres méthodes (GetCell et GetRange). Si vous souhaitez utiliser des références de style Excel aux cellules, telles que des références de plages (par exemple, H8, A3:D5, Sheet2!A12:G18) ou des plages nommées, utilisez les méthodes portant le suffixe A1. Ces méthodes permettent de passer le nom d'une feuille et l'adresse de la plage appropriée. Dans la plupart des cas, il est pratique d'utiliser des plages nommées à la place des références de style Excel, pour des raisons d'abstraction.

Si vous souhaitez accéder à une plage Excel en utilisant un système de coordonnées numériques, adoptez les méthodes qui ne portent pas le suffixe A1. Il est plus facile d'utiliser des coordonnées de plage lorsque le code parcourt en boucle un ensemble de cellules ou lorsque les coordonnées de la plage sont calculées en tant que partie intégrante de l'algorithme.

Les coordonnées de ligne et de colonne d'une cellule sont basées sur la valeur 0. Par conséquent, « 0,0 » retourne la cellule A1, comme dans l'exemple suivant :

// Call the GetCell method to retrieve a value from a cell.
// The cell is in the first row and first column; that is, cell A1
object[] rangeResult2 = xlservice.GetCell(sessionId, sheetName, 0, 0, true, out outStatus);

Si vous souhaitez obtenir les valeurs de plusieurs cellules adjacentes, vous pouvez envisager d'utiliser la méthode GetRange au lieu d'appeler plusieurs fois la méthode GetCell. Il en résulte une seule boucle vers le serveur au lieu de plusieurs. Par conséquent, dans certains cas, vous obtenez une amélioration sensible des performances en utilisant la méthode GetRange à la place de la méthode GetCell.

Lors de l'obtention d'une plage de cellules à l'aide des méthodes GetRange et GetRangeA1, vous obtenez un tableau Objet (object[] dans C# et Object () dans Visual Basic .NET). Le tableau Objet est en fait un tableau en escalier. Chaque entrée du tableau obtenu constitue un autre tableau d'objets représentant les cellules. Pour plus d'informations sur les tableaux en escalier, voir Tableaux en escalier (Guide de programmation C#) (https://msdn2.microsoft.com/fr-fr/library/2s05feca(vs.80).aspx).

Pour obtenir des valeurs à l'aide des méthodes GetCell et GetRange

  1. Utilisez la méthode GetCell pour obtenir la valeur d'une cellule dans le classeur ouvert à l'aide de coordonnées de plage numériques ; par exemple :

    // Instantiate the Web service and make a status array object.
    ExcelService xlservice = new ExcelService();
    Status[] outStatus;
    string sheetName = "Sheet2";
    
    // Set the path to a workbook.
    // The workbook must be in a trusted location.
    string targetWorkbookPath = "http://myserver02/example/Shared%20Documents/Book1.xlsx";
    
    // Set credentials for requests.
    xlservice.Credentials = System.Net.CredentialCache.DefaultCredentials;
    
    // Call the open workbook, and point to the trusted 
    // location of the workbook to open.
    string sessionId = xlservice.OpenWorkbook(targetWorkbookPath, "en-US", "en-US", out outStatus);
    
    // Call the GetCell method to retrieve a value from a cell.
    // The cell is in the first row and ninth column.
    object[] rangeResult2 = xlservice.GetCell(sessionId, sheetName, 0, 8, false, out outStatus);
    
  2. Utilisez la méthode GetRange pour obtenir les valeurs d'une plage dans le classeur ouvert à l'aide de coordonnées de plage numériques.

    // Instantiate the Web service and make a status array object.
    ExcelService xlservice = new ExcelService();
    Status[] outStatus;
    RangeCoordinates rangeCoordinates = new RangeCoordinates();
    string sheetName = "Sheet1";
    ...
    // Prepare object to define range coordinates
    // and call the GetRange method.
    // startCol, startRow, startHeight, and startWidth
    // get their value from user input.
    rangeCoordinates.Column = (int)startCol.Value;
    rangeCoordinates.Row = (int)startRow.Value;
    rangeCoordinates.Height = (int)startHeight.Value;
    rangeCoordinates.Width = (int)startWidth.Value;
    ...
    object[] rangeResult1s = xlservice.GetRange(sessionId, sheetName, rangeCoordinates, false, out outStatus);
    foreach (object[] x in rangeResult1s)
    {
        foreach (object y in x)
        {
            Console.WriteLine(String.Format("{0}",  y));
        }
    }
    

Pour obtenir des valeurs à l'aide des méthodes GetCellA1 et GetRangeA1

  1. Utilisez la méthode GetCellA1 pour obtenir la valeur d'une cellule dans le classeur ouvert, à l'aide de la spécification de plage Excel « A1 » ; par exemple :

    // Instantiate the Web service and make a status array object.
    ExcelService xlservice = new ExcelService();
    Status[] outStatus;
    string sheetName = "Sheet2";
    
    object[] rangeResult = xlservice.GetCellA1(sessionId, sheetName, "MonthlyPayment", true, out outStatus);
    
  2. Utilisez la méthode GetRangeA1 pour obtenir la valeur d'une plage dans le classeur ouvert, à l'aide de la spécification de plage Excel « A1 ». L'exemple de code suivant demande une plage 2x3, c'est-à-dire, deux lignes par trois colonnes. Le code effectue ensuite une boucle sur chaque ligne retournée et récupère les trois cellules correspondantes. Ainsi, lors de la première itération :

    • rangeResult [0] retourne la valeur de la cellule B2

    • rangeResult [1] retourne la valeur de la cellule C2

    • rangeResult [2] retourne la valeur de la cellule D2

      Lors de la deuxième itération :

    • rangeResult [0] retourne la valeur de la cellule B3

    • rangeResult [1] retourne la valeur de la cellule C3

    • rangeResult [2] retourne la valeur de la cellule D3

    object[] rangeResults = xlservice.GetRangeA1(sessionId, "Sheet1", "B2:D3", true, out outStatus);
    foreach (object[] rangeResult in rangeResults)
    {
        Console.WriteLine(String.Format("{0} | {1} | {2}", 
            rangeResult[0], rangeResult[1], rangeResult[2]));
    }
    

Voir aussi

Autres ressources

Procédure : spécifier une plage d'adresses et un nom de feuille
Procédure : définir des valeurs de plages
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