Haben Sie schon etwas mit Excel Services gemacht?

Excel Services ist eine neue Technologie die im Microsoft Office Sharepoint 2007 eingeführt wurde. Wichtig ist, dass Excel Services von Grund auf als eine Server-seitige Technologie konzipiert wurde: mit Excel Services können Sie tatsächlich eine skalierbare und robuste Enterprise Lösung aufbauen, die erlaubt Server-seitige Arbeitsmappen auszuführen (mit einer Server seitigen Lösung kann man natürlich von den Server zusätzliche Rechenleistung und Zuverlässigkeit für "Long-Running" Transaktionen profitieren)

Excel Services bietet zwei Schnittstellen: eine Web-basierte UI, um Excel Spreadsheets innerhalb von einem Browser anzuschauen und eine Web Service Schnittstelle, die ein programmatischer Zugang zu Spreadsheets erlaubt.

Die Web UI basierte Schnittstelle erlaubt Benutzern einen interaktiven oder lesenden Zugriff auf eine KalkulationsTabelle innerhalb vom Browser; es wird nur DHTML verwendet, keine ActiveX Controls und keine Excel Installation auf den Client sind nötig.

Mit der Web Services Schnittstelle können Sie programmatisch auf ein Server-seitiges Spreadsheet zugreifen und die Business Logik des Excel benutzen.

Mit Excel Services, werden Spreadsheets einfach in einer zentralen Sharepoint Dokumentbibliothek publiziert, die mit einem vertrauenswürdigen Dateispeicherort konfiguriert ist. Der Zweck vertrauenswürdiger Dateispeicherorte besteht darin, dass der zentrale Administrator in eine Office SharePoint Server 2007-Serverfarm steuern kann, welche Spreadsheets in Excel Services geladen werden können, welche Arten von Datenverbindungen erlaubt sind (Verbindungen zur externen Datenquellen sind auch möglich) und welche Benutzer Rechten haben auf die Server-seitige generierte Version von den Spreadsheets zuzugreifen oder sogar zu ändern.

Excel Services kann man erweitern: man kann ganz einfach “User-Defined Function“ selber definieren.

Meiner Meinung nach ist der beste Weg die Technologie zu erlernen, sie selber gleich auszuprobieren. Darum werde ich Ihnen zeigen wie man Excel Services benutzen kann (Befehle sind auf eine englische Installation basiert).

1. Dokumentbibliothek erstellen innerhalb von Sharepoint Server 2007

  • Erstellen Sie eine neue Sites innerhalb von Sharepoint und benennen Sie es MySite
  • Erstellen Sie eine neue Dokumentbibliothek innerhalb der neu erstellten Site und benennen sie es MyDocLib
  • In der MyDocLib Dokumentbibliothek selektieren sie Document Library Setting von dem Settings Menu. Klicken Sie auf Advance Settings und bei der Browse-enable Documents Sektion, wählen Sie Display as a web page, dann klicken Sie auf OK

2. Dokumentbibliothek als “Trusted File Location” definieren

Damit Excel Arbeitsmappen auf die erstellte Dokumentbibliothek publiziert werden und mit Excel Services benutzt werden können, müssen Sie die Dokumentbibliothek als „Trusted File Location“ definieren.

  • In der zentralen Administration von Sharepoint, wählen Sie Application Management.
  • Klicken Sie dann auf Create or configure this farm’s shared services und dann auf den SPP Link
  • In der Excel Services Settings Sektion, klicken Sie auf Trusted file location
  • Klicken Sie auf Add Trusted File Location
  • Fügen Sie dieURL von der MyDocLib Dokumentbibliothek in die Feld Adresse ein
  • Aktivieren Sie die Eigenschaft Allow User-Defined Functions
  • Klicken Sie auf OK

2. Excel publizieren

Die nächsten Schritte zeigen Ihnen wie Sie eine Excel Arbeitsmappe mit der Hilfe der Publish Funktion von Excel 2007 publizieren können.

  • Starten Sie Excel 2007
  • Definieren Sie folgende Zellen wie folgt:
    --> A1 Wert: Input1
    --> A2 Wert: Input2
    --> B1 als Value1 definieren
    --> B2 als Value2 definieren
    --> B3 Wert: =Value1*Value2
    --> B3 als Result definieren

         

  • Wählen Sie Publish | Excel Services wie im folgenden Bild angezeigt ist:

         

  • Klicken Sie auf den Excel Services Options Knopf. Der Excel Services Options Dialog öffnet sich. Klicken Sie auf die Parameters Tab und auf den Add… Knopf. Hier können Sie die 2 Zellen (Value1/Value2) wählen. Sie werden als Parameter verwendet. Klicken Sie auf OK.

         

  • Speichern Sie die Excel Arbeitsmappe auf die Dokumentbibliothek welche Sie vorher definiert haben (https://hostname/..../MySite/MyDocLib/)
  • Ihr Dokument ist jetzt auf dem Sharepoint Server publiziert. Wenn Sie auf der MyDocLib navigieren und das publizierte Dokument im Browser öffnen (via View in Web Browser), werden Sie die Web-basierte Version von der Excel Arbeitsmappe sehen:

Sie können jetzt einfach Value1 und Value2 bei der Parameters Sektion eingeben und auf Apply drucken.

3. Zugriff via Web Service

  •  Erstellen Sie jetzt ein neues Visual Studio 2005 Projekt vom Typ Console Application und benennen Sie es UsingExcelWebServices.
  •  Fügen Sie eine Web Referenz auf den Excel Web Services:

https://[hostname]/_vti_bin/ExcelService.asmx

  • Fügen Sie ein using Statement zu der neuen “Namespace“ ein.
  • Fügen Sie folgende Code Zeilen in die static Main Methode ein (definiert in dem Program.cs Datei)

//args[0] contains workbook path

//args[1] contains first operand (Value 1)

//args[2] contains second operand (Value 2)

if (args.Length < 1)

{

Console.Error.Write("Please provide Params");

return;

}

// Excel web services stuff:

// Instantiate and initialize the service proxy object

ExcelService xlSrv = new ExcelService();

xlSrv.Credentials = System.Net.CredentialCache.DefaultCredentials;

Status[] status;

string sessionId = xlSrv.OpenWorkbook(args[0], string.Empty, string.Empty, out status);

// Set parameter values into cells

status = xlSrv.SetCellA1(sessionId, "Sheet1", "Value1", args[1]);

status = xlSrv.SetCellA1(sessionId, "Sheet1", "Value2", args[2]);

// Calculate the workbook.

status = xlSrv.CalculateWorkbook(sessionId, CalculateType.Recalculate);

// Get result and write it out.

object result = xlSrv.GetCellA1(sessionId, "Sheet1", "Result", true, out status);

Console.WriteLine("{0}:\t{1}", "Result", result);

// Close the session.

status = xlSrv.CloseWorkbook(sessionId);

  • Sie sollten jetzt die folgende Situation haben:

  • Kompilieren Sie die Console Anwendung und starten Sie diese via Kommandofenster (als Parameter müssen Sie den Pfad zur Excel Arbeitsmappe eingeben und die 2 Parameter, Value1 und Value2 für die Kalkulation):

UsingExcelWebService.exe https://[hostname]/.../MySite/MyDocLib/[YourWorkbookName].xlsx 5 3

4. User Defined Function

Als letztes Beispiel werden wir jetzt eine User-Defined Funtion definieren.

  • Erstellen Sie ein neues Visual Studio 2005 Project von Typ Class Library und nennen Sie es SayHelloSample.
  • Fügen Sie eine Referenz auf die Microsoft.Office.Excel.Server.Udf.dll DLL ein
  • Benennen Sie die Class1.cs Datei (wenn Sie mit C# programmieren) in MyUDFClass um und kopieren Sie den folgenden Code innerhalb von der MyUDFClass.cs Datei:

using System;

using System.Collections.Generic;

using System.Text;

using Microsoft.Office.Excel.Server.Udf;

namespace SayHelloSample

{

    [UdfClass]

    public class MyUDFClass

    {

       [UdfMethod]

       public string SayHello(string name)

       {

         return "Hello" + name;

       }

    }

}

Man hat einfach eine normale Klasse mit Methode definiert. Was speziell ist, ist dass 2 Attribute auf die Klasse Stufe und Methode Stufe gesetzt wurden: die UdfClass und die UdfMethod Attributen.

  • Führen Sie den Build Prozess aus.
  • In der zentralen Administration von Sharepoint, selektieren Sie Application Management.
  • Selektieren Create or configure this farm’s shared services.
  • Klicken Sie auf den SPP Link
  • In der Excel Services Settings Sektion, klicken Sie auf User-defined function assemblies
  • Klicken Sie auf Add User-Defined Function Assembly
  • In der Assembly Eigenschaft setzen Sie den Pfad zum Assembly, welchen Sie gerade erstellt haben
    (Beispiel „C:\ExcelServices\SayHelloSample\SayHelloSample\bin\Debug\SayHelloSample.dll“ )
  • Wählen Sie File Path bei Assembly Location und dann klicken Sie auf den Ok Knopf.
  • Jetzt können Sie wieder Ihre Excel Arbeitsmappe öffnen, eine Zelle mit =SayHello(“ yourname“) definieren und neu publizieren. Nachdem Sie das Dokument publiziert haben sollte sich in der Zelle der Wert “Hello yourname“ zeigen .

In diesen Beispielen haben Sie gesehen wie Sie Parameters definieren können, wie Sie via Excel Web Services auf eine Excel Arbeitsmappe zugreifen können und wie sie Excel Services via User Defined Function selbst erweitern können.

Wenn Sie weitere Informationen zum Thema Excel Services haben möchten, gehen sie auf https://blogs.msdn.com/excel/ . Das ist sicher eine sehr gute Informationsquelle.