Problèmes connus et conseils Excel Services
Dernière modification : mercredi 7 septembre 2011
S’applique à : SharePoint Server 2010
Dans cet article
Service Web Excel
Présentation de la sécurité
Visual Studio
Fonctions Excel Services définies par l’utilisateur
Général
Vous trouverez ci-après une liste de problèmes recensés et des conseils de travail avec Excel Services.
Service Web Excel
Affichage de l’emplacement WSDL
Vous pouvez afficher la page Excel Web Services WSDL (Web Services Description Language) en accédant à l’URL suivante du serveur : http://<server>/<customsite>/_vti_bin/excelservice.asmx?WSDL
si vous ne disposez pas d’un code personnalisé, vous pouvez afficher la page WSDL à l’aide de l’URL suivante :
http://<server>/_vti_bin/excelservice.asmx?WSDL
Pour plus d’informations, voir la rubrique Accès à l'API SOAP.
Présentation des espaces de noms et services Web Excel
Les éléments suivants ont les espaces de noms et les services Web Excel :
Unique objet de service Web contenant toutes les méthodes API : ExcelService
Espace de noms du schéma : https://schemas.microsoft.com/office/excel/server/webservices
Nom de la page du service Web : ExcelService.asmx
Liaison locale ou à un service Web
Dans certains scénarios, vous devez vous lier directement à Microsoft.Office.Excel.Server.WebServices.dll et y accéder comme pour tout assembly local, au lieu de l’appeler comme service Web via SOAP sur HTTP.
Pour plus d’informations et d’instructions sur l’utilisation de la liaison directe, voir Appels SOAP de retour de boucle et liaison directe.
Présentation des caractères non valides
Les appels des méthodes GetCell et GetRange échoueront si les cellules du classeur contiennent des caractères non valides dans une réponse XML.
Par exemple, si une cellule contient des caractères aux valeurs hexadécimales 0x1, 0x2 ... 0x8, l’analyseur ASP.NET déclenche une exception selon laquelle la valeur du caractère en cours d’écriture dans la réponse XML n’est pas valide :
System.InvalidOperationException : le client a trouvé « text/html; charset=utf-8 » comme type de contenu de réponse, alors qu’il attendait « text/xml ». Échec de la requête avec le message d’erreur : -- <html> <head> <title>« », la valeur hexadécimale 0x01, n’est pas un caractère valide.</title>
Ce comportement est attendu. La spécification XML qui définit les caractères autorisés dans une réponse XML valide spécifie que les valeurs hexadécimales values 0x1, 0x2 ... 0x8 ne sont pas des caractères XML valides :
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* tout caractère Unicode, à l'exclusion des blocs de substitution, FFFE et FFFF. */
Pour plus d’informations, voir W3C Extensible Markup Language (XML) Specification (http://www.w3.org/TR/REC-xml\#NT-Char).
Enregistrement d’un classeur
Lorsque vous apportez des modifications à un classeur – par exemple, en définissant les valeurs sous forme de plage avec Excel Web Services – les modifications du classeur ne sont conservées que pour cette session particulière. Elles ne sont pas enregistrées ou reportées dans le classeur d’origine. Quand la session du classeur en cours se termine (par exemple, lorsque vous appelez la méthode CloseWorkbook ou que le délai de la session a expiré), les modifications apportées seront perdues.
Pour enregistrer les modifications dans un classeur, vous pouvez utiliser la méthode GetWorkbook, puis enregistrer le classeur avec l’API du magasin de fichiers de destination. Pour plus d’informations, voir Procédure : obtenir un classeur entier ou une capture instantanée et Procédure : enregistrer un classeur.
Présentation de la propriété Url d’une classe de proxy de services Web Excel
N’utilisez pas la propriété Url d’un proxy Excel Web Services pour l’emplacement du classeur que vous voulez ouvrir. La propriété Url d’une classe de proxy de services Web générée par Visual Studio obtient ou définit l’URL de base du service Web XML que le client demande. Dans le cas de Excel Web Services, cette URL est la suivante :
http://<server name>/_vti_bin/ExcelService.asmx
Pour spécifier l’emplacement d’un classeur, utilisez la méthode OpenWorkbook au lieu de la propriété Url comme illustré dans l’exemple de code suivant.
//Instantiate the web service and make a status array object.
ExcelService xlservice = new ExcelService();
string sheetName = "Sheet1";
//Set the path to the workbook to open.
//TODO: Change the path to the workbook
//to point to a workbook you have access to.
//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);
Pour plus d’informations, voir Propriété WebClientProtocol.Url (éventuellement en anglais) (https://msdn.microsoft.com/en-us/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebServicesProtocolsWebClientProtocolClassUrlTopic.asp).
Présentation de la sécurité
Utilisation des autorisations du classeur
Soyez conscient des problèmes suivants relatifs aux organisations du classeur :
Excel Web Services utilise le schéma d’autorisation Microsoft SharePoint Foundation pour vérifier que l’appelant a le droit d’appeler les API (à savoir, passer des appels de service Web) sur le site SharePoint Foundation (le site Web où Excel Web Services est situé) à distance. Si l’appelant n’a pas l’autorisation « Utiliser l’API distante », Excel Web Services retourne une erreur « HTTP 401 (non autorisé) » et enregistre un événement « Échec de l’autorisation de l’API ». Excel Web Services exécute ces contrôles d’autorisation uniquement pour les appels qui sont à l’origine des appels SOAP. Les appels des applications liées localement à Microsoft.Office.Excel.Server.WebServices.dll ne sont pas considérés comme des appels distants. Par conséquent, ils ne sont pas soumis aux contrôles d’autorisation. Cependant, si l’application liée localement à Microsoft.Office.Excel.Server.WebServices.dll est elle-même un service SOAP et gère les appels SOAP du service, l’appel de Excel Web Services ressemblera à un appel SOAP (même si l’application est lié directement à Microsoft.Office.Excel.Server.WebServices.dll). Dans ce scénario, Excel Web Services exécutera les contrôles d’autorisation.
Pour obtenir l’intégralité du classeur (par exemple, en appelant la méthode GetWorkbook avec l’argument WorkbookType.FullWorkbook), l’appelant a besoin de l’autorisation « ouvrir » pour le classeur ou de l’autorisation « lire » sur un partage de fichier.
Pour appeler la méthode GetApiVersion, aucune autorisation n’est nécessaire.
Pour le reste des méthodes d’Excel Web Services, outre les informations d’identification, l’appelant nécessite une autorisation d’affichage (dans SharePoint Foundation) ou de lecture (sur un partage de fichiers) pour le classeur.
Emplacement digne de confiance
Les classeurs que vous voulez ouvrir dans Excel Services doivent se trouver dans un emplacement digne de confiance. Dans le cas contraire, les appels Excel Web Services d’ouverture du classeur échoueront.
Pour plus d’informations sur la façon d’approuver un emplacement, voir Procédure : Approuver un emplacement et Procédure : approuver les emplacements des classeurs à l'aide de scripts.
Visual Studio
Comportement du proxy Microsoft Visual Studio
Quand Microsoft Visual Studio crée une classe de proxy pour un projet de client qui appelle Excel Web Services, il a le comportement suivant :
si une méthode n’a aucune valeur de retour, et qu’un ou plusieurs arguments out, le premier argument out est déplacé pour devenir la valeur de retour. Autrement dit, la méthode de la classe proxy possèdera un argument out en moins dans la signature de la méthode. Mais la signature aura une valeur de retour avec le type et le contenu de ce qui a été utilisé pour être le premier argument out.
Les méthodes Excel Web Services affectées sont :
Calculate
CalculateA1
CalculateWorkbook
CancelRequest
CloseWorkbook
GetSessionInformation
Refresh
SetCell
SetCellA1
SetRange
SetRangeA1
Fonctions Excel Services définies par l’utilisateur
Le GAC (Global Assembly Cache) est vérifié en premier, puis le dossier local
Dans le Microsoft .NET Framework, par conception, l’assembly d’un Global Assembly Cache sera chargé à la place du même assembly d’un dossier local. Le CLR (common language runtime) recherchera un assembly dans le GAC avant d’explorer les dossiers locaux.
Par conséquent, si un assembly est installé dans le Global Assembly Cache et qu’il se trouve dans la liste UDF mais désactivé (ou supprimé entièrement de la liste UDF), et qu’un assembly identique est installé dans un dossier local et activé, l’assembly du Global Assembly Cache demeurera chargé et utilisé à la place du même assembly du dossier local.
Cela n’affecte pas les scénarios de mise à niveau dans lesquels la version de l’assembly a été modifiée, ce qui signifie que l’assembly n’est plus le même.
Général
L’ordre des chaînes dans Sharedstring.xml n’est pas conservé
Excel Services ne conserve pas l’ordre original des chaînes dans un tableau de chaînes partagé d’un classeur (la partie Sharedstrings.xml au sein du fichier Format XML de Microsoft Office Excel). Par exemple, exécutez les étapes suivantes :
Ouvrez un fichier avec Excel.
Enregistrez le fichier au format .xlsx.
Téléchargez le fichier sur une bibliothèque de documents qui soit un emplacement approuvé.
Ouvrez le fichier dans la bibliothèque de documents avec Excel Web Access.
Cliquez sur Ouvrir dans Excel.
Enregistrez le fichier au format .xlsx.
Si vous comparez le fichier Sharedstrings.xml créé à l’étape 2 avec celui créé à l’étape 6, vous constaterez que l’ordre des parties Sharedstrings.xml peut être différent.
Vous ne devez pas écrire une application qui présume que l’ordre des chaînes d’un tableau de chaînes partagé est fixe. Par exemple, vous ne pouvez pas remplacer le tableau de chaînes partagé avec un tableau de traductions localisées existant. Vous devez vous adapter au nouvel ordre des chaînes du tableau de chaînes partagé.
Voir aussi
Tâches
Procédure : Approuver un emplacement
Concepts
Méthodes conseillées pour Excel Services