Freigeben über


Bekannte Probleme und Tipps für Excel Services

Letzte Änderung: Mittwoch, 7. September 2011

Gilt für: SharePoint Server 2010

Inhalt dieses Artikels
Excel-Webdienste
Grundlegendes zur Sicherheit
Visual Studio
Benutzerdefinierte Funktionen in Excel Services
Allgemein

Im Folgenden werden bekannte Probleme und Tipps für das Arbeiten mit Excel Services beschrieben.

Excel-Webdienste

Anzeigen des WSDL-Speicherorts

Wenn Sie die WSDL-Datei (Web Services Description Language) für Excel-Webdienste anzeigen möchten, navigieren Sie zur folgenden URL auf dem Server: http://<server>/<customsite>/_vti_bin/excelservice.asmx?WSDL

Falls Sie nicht über eine benutzerdefinierte Website verfügen, können Sie die WSDL-Datei mithilfe der folgenden URL anzeigen:

http://<server>/_vti_bin/excelservice.asmx?WSDL

Weitere Informationen finden Sie unter Zugreifen auf die SOAP-API.

Grundlegendes zu Excel-Webdiensten und Namespaces

Es gibt die folgenden Excel-Webdienste und Namespaces:

Direkte Verknüpfung oder Verknüpfung mit einem Webdienst

In bestimmten Szenarien sollten Sie eine direkte Verknüpfung mit Microsoft.Office.Excel.Server.WebServices.dll ausführen und wie auf jede andere lokale Assembly zugreifen, anstatt einen Aufruf als Webdienst per SOAP über HTTP auszuführen.

Weitere Informationen und Richtlinien zur Verwendung der direkten Verknüpfung finden Sie unter Loopback-SOAP-Aufrufe und direkte Verknüpfung.

Grundlegendes zu ungültigen Zeichen

Bei den Aufrufen der Methoden GetCell und GetRange tritt ein Fehler auf, falls die Arbeitsmappenzellen Zeichen enthalten, die in einer XML-Antwort unzulässig sind.

Wenn beispielsweise eine Zelle Zeichen mit den Hexadezimalwerten 0x1, 0x2 ... 0x8 enthält, meldet der ASP.NET-Parser eine Ausnahme, dass der Wert des Zeichens, das in die XML-Antwort geschrieben wird, ungültig ist:

System.InvalidOperationException: Der gefundene Anforderungsinhaltstyp ist 'text/html; charset=utf-8', aber 'text/xml' wurde erwartet. Anforderung mit folgender Fehlermeldung nicht erfolgreich: -- <html> <head> <title>' ', der Hexadezimalwert 0x01 ist ein ungültiges Zeichen.</title>

Dies entspricht dem erwarteten Verhalten. Die XML-Spezifikation, mit der definiert wird, welche Zeichen in einer XML-Antwort zulässig sind, gibt an, dass die Hexadezimalwerte 0x1, 0x2 ... 0x8 ungültige XML-Zeichen sind:

Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */

Weitere Informationen finden Sie unter W3C Extensible Markup Language (XML) Specification (http://www.w3.org/TR/REC-xml\#NT-Char).

Speichern einer Arbeitsmappe

Wenn Sie Änderungen an einer Arbeitsmappe vornehmen, beispielsweise durch Festlegen von Werten auf einen Bereich mithilfe von Excel-Webdienste, werden diese Änderungen an der Arbeitsmappe nur für diese bestimmte Sitzung beibehalten. Die Änderungen werden weder gespeichert noch in die ursprüngliche Arbeitsmappe übernommen. Endet die aktuelle Arbeitsmappensitzung (etwa durch Aufrufen der CloseWorkbook-Methode oder durch ein Sitzungstimeout), gehen die von Ihnen vorgenommenen Änderungen verloren.

Sollen Änderungen an einer Arbeitsmappe gespeichert werden, dann können Sie die GetWorkbook-Methode verwenden und die Arbeitsmappe mithilfe der API des Zieldateispeichers speichern. Weitere Informationen finden Sie unter Gewusst wie: Abrufen einer ganzen Arbeitsmappe oder einer Momentaufnahme und How to: Save a Workbook.

Grundlegendes zur Url-Eigenschaft einer Excel-Webdienste-Proxyklasse

Die Url-Eigenschaft eines Excel-Webdienste-Proxy sollten Sie nicht für den Speicherort der zu öffnenden Arbeitsmappe verwenden. Mit der Url-Eigenschaft einer von Visual Studio generierten Webdienste-Proxyklasse wird die Basis-URL des XML-Webdiensts abgerufen oder festgelegt, der vom Client angefordert wird. Für Excel-Webdienste ist dies in der Regel:

http://<server name>/_vti_bin/ExcelService.asmx

Zur Angabe des Speicherorts einer Arbeitsmappe verwenden Sie wie im folgenden Codebeispiel veranschaulicht die OpenWorkbook-Methode anstelle der Url -Eigenschaft.

//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);
                

Weitere Informationen finden Sie unter WebClientProtocol.Url-Eigenschaft (https://msdn.microsoft.com/en-us/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebServicesProtocolsWebClientProtocolClassUrlTopic.asp).

Grundlegendes zur Sicherheit

Verwenden von Arbeitsmappenberechtigungen

Beachten Sie im Zusammenhang mit Arbeitsmappenberechtigungen die folgenden Probleme:

  • Excel-Webdienste überprüft mithilfe des Microsoft SharePoint Foundation-Autorisierungsschemas, ob der Aufrufer über die Berechtigung für den Remoteaufruf von APIs (d. h. Ausführen von Webdienstaufrufen) auf der SharePoint Foundation-Website (d. h., die Website mit Excel-Webdienste) verfügt. Falls der Aufrufer nicht über die Berechtigung zum Verwenden der Remote-API verfügt, gibt Excel-Webdienste den Fehler "HTTP 401 (Nicht autorisiert)" zurück und protokolliert ein Ereignis, dass bei der API-Autorisierung ein Fehler aufgetreten ist. Excel-Webdienste führt diese Autorisierungsprüfungen nur für Aufrufe aus, die von SOAP-Aufrufen ausgehen. Aufrufe durch Anwendungen, die eine lokale Verbindung mit Microsoft.Office.Excel.Server.WebServices.dll herstellen, gelten nicht als Remoteaufrufe. Deshalb unterliegen sie keinen Autorisierungsprüfungen. Falls es sich jedoch bei der Anwendung selbst, die eine lokale Verbindung mit Microsoft.Office.Excel.Server.WebServices.dll herstellt, um einen SOAP-Dienst handelt, der die SOAP-Aufrufe des Diensts ausführt, scheint der Aufruf von Excel-Webdienste ein SOAP-Aufruf zu sein (obwohl die Anwendung eine direkte Verbindung mit Microsoft.Office.Excel.Server.WebServices.dll herstellt). In diesem Szenario führt Excel-Webdienste die Autorisierungsprüfungen aus.

  • Zum Abrufen der gesamten Arbeitsmappe (z. B. durch Aufrufen der GetWorkbook-Methode mithilfe des WorkbookType.FullWorkbook-Arguments) benötigt der Aufrufer die Berechtigung "Öffnen" für die Arbeitsmappe oder die Berechtigung "Lesen" in einer Dateifreigabe.

  • Zum Aufrufen der GetApiVersion-Methode sind keine Berechtigungen erforderlich.

  • Für die übrigen Excel-Webdienste-Methoden benötigt der Aufrufer neben den Anmeldeinformationen die Berechtigung "Anzeigen" (in SharePoint Foundation) oder "Lesen" (in einer Dateifreigabe) für die Arbeitsmappe.

Vertrauenswürdiger Speicherort

Die Arbeitsmappen, die Sie in Excel Services öffnen möchten, müssen sich in einem vertrauenswürdigen Speicherort befinden. Andernfalls treten bei Excel-Webdienste-Aufrufen zum Öffnen der Arbeitsmappe Fehler auf.

Informationen zum Festlegen eines vertrauenswürdigen Speicherorts finden Sie unter Gewusst wie: Festlegen eines Speicherorts als vertrauenswürdig und How to: Trust Workbook Locations Using Script.

Visual Studio

Microsoft Visual Studio-Proxyverhalten

Wenn Microsoft Visual Studio eine Proxyklasse für ein Clientprojekt erstellt, mit dem Excel-Webdienste aufgerufen wird, weist diese das folgende Verhalten auf:

Wenn eine Methode keinen Rückgabewert aufweist, und eines oder mehrere out-Argumente, wird das erste out-Argument verschoben und wird zum Rückgabewert. Das heißt, die Methode in der Proxyklasse weist ein out-Argument weniger in der Methodensignatur auf. Die Signatur enthält jedoch einen Rückgabewert mit dem Typ und dem Inhalt des ursprünglich ersten out-Arguments.

Die folgenden Excel-Webdienste-Methoden sind betroffen:

  • Calculate

  • CalculateA1

  • CalculateWorkbook

  • CancelRequest

  • CloseWorkbook

  • GetSessionInformation

  • Refresh

  • SetCell

  • SetCellA1

  • SetRange

  • SetRangeA1

Benutzerdefinierte Funktionen in Excel Services

Globaler Assemblycache wird zuerst überprüft, dann der lokale Ordner

Standardmäßig wird in Microsoft .NET Framework eine Assembly in einem globalen Assemblycache anstelle derselben Assembly in einem lokalen Ordner geladen. Die Common Language Runtime sucht zuerst im globalen Assemblycache nach einer Assembly, und erst danach in den lokalen Ordnern.

Angenommen, eine Assembly ist im globalen Assemblycache installiert und in der UDF-Liste vorhanden, aber deaktiviert (oder vollständig aus der UDF-Liste entfernt), und eine identische Assembly ist in einem lokalen Ordner installiert und aktiviert. In diesem Fall wird dennoch die Assembly im globalen Assemblycache anstelle derselben Assembly im lokalen Ordner geladen und verwendet.

Upgradeszenarien, bei denen die Assemblyversion geändert wurde und es sich deshalb nicht mehr um dieselbe Assembly handelt, sind nicht davon betroffen.

Allgemein

Reihenfolge von Zeichenfolgen in "Sharedstring.xml" wird nicht beibehalten

Excel Services behält die ursprüngliche Reihenfolge von Zeichenfolgen in einer SharedString-Tabelle einer Arbeitsmappe (Sharedstrings.xml-Komponenten in der Microsoft Office Excel-XML-Format-Datei) nicht bei. Führen Sie beispielsweise die folgenden Schritte aus:

  1. Öffnen Sie eine Datei in Excel.

  2. Speichern Sie die Datei im XLSX-Dateiformat.

  3. Laden Sie die Datei in eine Dokumentbibliothek hoch, die ein vertrauenswürdiger Speicherort ist.

  4. Öffnen Sie die Datei in der Dokumentbibliothek mithilfe von Excel Web Access.

  5. Klicken Sie auf In Excel öffnen.

  6. Speichern Sie die Datei im XLSX-Dateiformat.

Wenn Sie die in Schritt 2 erstellte Datei Sharedstrings.xml mit der in Schritt 6 erstellten Datei vergleichen, werden Sie feststellen, dass die Sharedstrings.xml-Komponenten eine unterschiedliche Reihenfolge aufweisen.

Sie sollten keine Anwendung erstellen, bei der davon ausgegangen wird, dass die Zeichenfolgen in der SharedString-Tabelle eine feste Reihenfolge aufweisen. Beispielsweise können Sie die SharedString-Tabelle nicht durch eine vorhandene lokalisierte Umwandlungstabelle ersetzen. Sie müssen eine Anpassung an die neue Reihenfolge der Zeichenfolgen in der SharedString-Tabelle vornehmen.

Siehe auch

Aufgaben

Gewusst wie: Festlegen eines Speicherorts als vertrauenswürdig

Konzepte

Bewährte Methoden für Excel Services

Excel Services Alerts

Excel Services-Architektur

Unterstützte und nicht unterstützte Features

Zugreifen auf die SOAP-API

Excel Services - Blogs, Foren und Ressourcen