Verwenden der Rechenpower von Excel mithilfe von Excel Services in SharePoint Server 2010

SharePoint-Videotutorial

Zusammenfassung: Informationen zur programmgesteuerten Nutzung der Rechenpower von Microsoft Excel mithilfe der Excel-Webdienste.

Letzte Änderung: Mittwoch, 12. September 2012

Gilt für: Excel Services | Office 2007 | SharePoint Foundation 2010 | SharePoint Server 2010 | Visual Studio | Visual Studio 2008 | Visual Studio 2010

Bereitgestellt von: Steve Hansen, Grid Logic (Visual Studio MVP)

Übersicht

Excel-Webdienste ist eine der befehlsorientierten Benutzerschnittstellen von Excel Services, einer Komponente von SharePoint Server 2010. Mithilfe der Excel-Webdienste können Sie programmgesteuert auf Microsoft Excel-Arbeitsmappen in SharePoint Server 2010 zugreifen und diese bearbeiten.

Einer der Vorteile der Excel-Webdienste ist, dass Excel-Arbeitsmappen als Programmierungsobjekte behandelt werden können. Auf diese Weise können Sie die Berechnungs- und Modellierungsfeatures von Excel nutzen. Deshalb müssen Sie ähnliche Funktionalität nicht in anderen Projekten implementieren. In der Regel erstellen Sie eine Arbeitsmappe, die für eine bestimmte Aufgabe geeignet ist, und verwenden dann die Excel-Webdienste, um programmgesteuert mit der Arbeitsmappe zu interagieren. In diesem Videotutorial erfahren Sie, wie Sie Excel-Webdienste nur mit einer in SharePoint 2010 gespeicherten leeren Arbeitsmappe und ein paar Dutzend Codezeilen verwenden. Insbesondere wird beschrieben, wie Sie mithilfe der Excel-Webdienste ein einfaches Hilfsprogramm zum Auswerten von Formeln verwenden, die im Dialogfeld Ausführen von Windows eingegeben wurden und die dann wie in Abbildung 1 und Abbildung 2 dargestellt in einem Eingabeaufforderungsfenster angezeigt werden.

Abbildung 1. Dialogfeld "Ausführen" von Windows

Dialogfeld 'Ausführen' in Windows

Abbildung 2. Eingabeaufforderung mit dem Ergebnis einer Excel-Berechnung

Befehlszeile mit Berechnungsergebnis

Code schreiben

Der Code in diesem Abschnitt veranschaulicht die Verwendung der Excel-Webdienste für die Excel-Berechnung.

Zum Erstellen dieses Hilfsprogramms speichern Sie die leere Arbeitsmappe Calculator.xlsx in einer Dokumentbibliothek in SharePoint Server 2010. Anschließend öffnen Sie Visual Studio 2010 und erstellen die neue Konsolenanwendung CommandLineCalculator.

Nachdem Sie das Projekt in Visual Studio erstellt haben, fügen Sie einen Webverweis auf den Excel-Webdienst hinzu.

So fügen Sie einen Webverweis auf die Excel-Webdienste hinzu

  1. Klicken Sie mit der rechten Maustaste auf das Projekt, und wählen Sie Dienstverweis hinzufügen aus.

  2. Klicken Sie auf Erweitert.

  3. Klicken Sie auf Webverweis hinzufügen.

  4. Geben Sie die URL zu Excelservice.asmx auf Ihrem SharePoint-Server ein. Beispiel: http://contoso.intranet.com/_vti_bin/excelservice.asmx.

  5. Drücken Sie dieEINGABETASTE. Visual Studio versucht, den Dienst abzufragen und eine Liste der von diesem Dienst unterstützten Vorgänge anzuzeigen.

  6. Ändern Sie bei Bedarf den Webverweisnamen. Im Codebeispiel für dieses Videotutorial heißt der Webverweis wie in Abbildung 3 dargestellt XL.

    Abbildung 3. Dialogfeld "Webverweis hinzufügen"


    Dialogfeld 'Webverweis hinzufügen' in Visual Studio

  7. Klicken Sie auf Verweis hinzufügen.

Nachdem Sie den Webverweis hinzugefügt haben, löschen Sie die vorhandene Main-Funktion, und ersetzen Sie sie durch die hier dargestellte Main-Funktion zusammen mit der zusätzlichen Calculate-Funktion.

static void Main(string[] args)
{
    if (args.Length > 0)
    {
        string result = Calculate(args[0]);
        Console.WriteLine("Result: {0}", result);
    }
    else
    {
        Console.WriteLine("You didn't supply a formula to evaluate.");
    }

    Console.WriteLine("Press ENTER to quit.");
    Console.ReadLine();
}

static string Calculate(string formula)
{
    string result;

    // Instantiate the web service and make a status array object.
    XL.ExcelService xlService = new XL.ExcelService();
    XL.Status[] outStatus;
            
    // Set path to workbook, worksheet name, and credentials.
    string workbookPath = 
        "http://server_name/Shared%20Documents/Calculator.xlsx";
    
    string sheetName = "Sheet1";
    xlService.Credentials = 
        System.Net.CredentialCache.DefaultCredentials;

    try
    {
        // Open the workbook.
        string sessionId = xlService.OpenWorkbook(
            workbookPath, "en-US", "en-US", out outStatus);

        // Set the formula of cell A1 and then recalculate.
        xlService.SetCell(sessionId, sheetName, 0, 0, formula);

        xlService.CalculateWorkbook(
            sessionId, XL.CalculateType.Recalculate);
                
        // Read the result and close the workbook.
        result = xlService.GetCell(sessionId, 
                                   sheetName, 
                                   0, 
                                   0, 
                                   false, 
                                   out outStatus).ToString();
        
        xlService.CloseWorkbook(sessionId);
    }
    catch (Exception e)
    {
        result = "Exception: " + e.Message;
    }
    return result;
}

Nachdem Sie das Projekt erstellt und getestet haben, müssen Sie im letzten Schritt der ausführbaren Datei eine Tastenkombination zuordnen, damit sie im Dialogfeld Ausführen von Windows ausgeführt werden kann. Fügen Sie dazu HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths einen Registrierungseintrag hinzu.

Zum Zuordnen der ausführbaren Datei zum Text XL fügen Sie den Schlüssel XL.exe hinzu. Anschließend legen Sie den Standardwert auf den Pfad der ausführbaren Datei CommandLineCalculator fest, die beim Erstellen des Projekts angelegt wurde.

Lesen

Excel-Webdienste ist die Excel Services-Komponente, die programmgesteuerten Zugriff auf Arbeitsmappen in SharePoint Server 2010 ermöglicht. Anwendungen können Excel-Webdienste aufrufen, um Werte und Formeln aus Arbeitsmappen zu berechnen, festzulegen und zu extrahieren und um externe Datenverbindungen zu aktualisieren. Wenn Sie Excel-Webdienste verwenden, können Sie serverseitige Arbeitsmappenlogik in eine Anwendung integrieren, die Aktualisierung von Excel-Arbeitsmappen automatisieren und anwendungsspezifische Benutzeroberflächen für serverseitige Excel-Berechnungen erstellen.

Excel Services bietet auch andere programmgesteuerte Alternativen für das Arbeiten mit serverbasierten Arbeitsmappen. Beispielsweise gibt es eine REST-API und ein ECMAScript (JavaScript, JScript)-Objektmodell. Excel-Webdienste ist einzigartig unter diesen Alternativen, da dies die einzige Möglichkeit zum Ändern von Formeln in einem Bereich ist. Wie in diesem Videotutorial veranschaulicht können Programmierer mithilfe der Möglichkeit zum Ändern von Formeln zur Laufzeit das Excel-Berechnungsmodul in anderen Anwendungen verwenden.

Mit der in diesem Videotutorial vorgestellten CommandLineCalculator-Anwendung können Sie eine Excel-Formel als Argument eingeben und dann mithilfe von Excel Services das Argument auswerten und das Ergebnis berechnen. Demzufolge geht das Programm davon aus, dass es sich bei dem an die Main-Funktion übergebenen Argument um eine Zeichenfolge handelt, welche die mit Excel Services auszuwertende Formel enthält. Deshalb muss zunächst überprüft werden, ob mindestens ein Argument an die Funktion übergeben wird. Falls ein Argument vorhanden ist, wird es von der Main-Funktion lediglich an die Calculate-Funktion übergeben.

Die Calculate-Funktion verarbeitet das Initialisieren des Webdiensts, das Öffnen der Arbeitsmappe, das Senden der auszuwertenden Formel an die Arbeitsmappe, das erneute Berechnen der Arbeitsmappe, das Lesen des Ergebnisses sowie das Schließen der Arbeitsmappe. Achten Sie darauf, dass der Arbeitsmappenpfad dem Speicherort der Arbeitsmappe Calculate.xlsx entsprechen sollte.

Beim Arbeiten mit Excel-Webdiensten erfordern Methoden, die spezifisch für eine Arbeitsmappe gelten, das Zeichenfolgenargument Sitzungs-ID. Die Sitzungs-ID, mit der die Excel-Webdienste einen Methodenaufruf einer bestimmten im Arbeitsspeicher gespeicherten Arbeitsmappe in Excel Services zuordnet. Dies ist sinnvoll angesichts der Tatsache, dass Excel Services auf einem Server ausgeführt wird und deshalb mehrere Kopien derselben Arbeitsmappe im Arbeitsspeicher geöffnet sein könnten.

Beachten Sie, dass beim Verweis auf einen bestimmten Bereich oder eine bestimmte Zelle mithilfe von Zeilen- und Spaltenkoordinaten Excel Services eine nullbasierte Konvention verwendet. Aus Ihrer Perspektive kann dies geringfügig von Ihrer Erwartung abweichen. Sehr erfahrene Entwickler, die Excel-Clientlösungen entwickeln, sind an eine 1-basierte Konvention zur Angabe von Zeilen und Spalten gewöhnt.

CommandLineCalculator ist ein hervorragendes Beispiel, wie Sie die Rechenpower von Excel in anderen Anwendungen nutzen können, ohne dass eine clientseitige Abhängigkeit von Excel besteht.

Anzeigen

Video ansehen

Video anschauen (00:07:56)

Erforschen

Informationen zum Autor

Steve Hansen, Grid Logic, ist ein MVP-Mitwirkender für Microsoft Office. Steve ist Office System Architect bei Grid Logic und hat für Microsoft viele (mindestens 50) Videos zur Entwicklung mit Office erstellt.

Steve hat viele Whitepaper zur Entwicklung mit Office verfasst sowie zwei Bücher (Mastering Excel 2000 Premium Edition und Mastering Excel 2003 Programming with VBA) bei Sybex veröffentlicht.