Gewusst wie: Programmgesteuertes Hinzufügen eines Excel Web Access-Webparts zu einer Seite

Letzte Änderung: Donnerstag, 8. April 2010

Gilt für: SharePoint Server 2010

In diesem Beispiel wird veranschaulicht, wie Sie einer SharePoint-Seite programmgesteuert ein Excel Web Access-Webpart hinzufügen. Außerdem erfahren Sie, wie Sie eine Excel-Arbeitsmappe programmgesteuert in einem Excel Web Access-Webpart anzeigen.

Im folgenden Projekt wird Microsoft Visual Studio verwendet.

HinweisHinweis

In Abhängigkeit von der Visual Studio-Version und den verwendeten Einstellungen der integrierten Entwicklungsumgebung (Integrated Development Environment, IDE) von Visual Studio können die Vorgehensweise und Schritte zum Erstellen eines Visual Studio-Projekts geringfügig von den hier in diesem Thema beschriebenen Verfahren abweichen.

HinweisHinweis

Es wird davon ausgegangen, dass Sie bereits eine SharePoint-Dokumentbibliothek erstellt und als vertrauenswürdigen Speicherort festgelegt haben. Weitere Informationen finden Sie unter Gewusst wie: Festlegen eines Speicherorts als vertrauenswürdig.

Hinzufügen eines Verweises

Die folgenden Schritte zeigen, wie Sie Microsoft.Office.Excel.WebUI.dll finden und einen Verweis hinzufügen. Wiederholen Sie diese Schritte für Microsoft.Office.Excel.WebUI.Internal.dll und Microsoft.SharePoint.dll.

HinweisHinweis

Es wird davon ausgegangen, dass Sie Microsoft.Office.Excel.WebUI.dll und Microsoft.Office.Excel.WebUI.Internal.dll bereits aus dem globalen Assemblycache in einen Ordner Ihrer Wahl kopiert haben. Weitere Informationen zum Suchen und Kopieren von Microsoft.Office.Excel.WebUI.dll und Microsoft.Office.Excel.WebUI.Internal.dll finden Sie unter Gewusst wie: Suchen und Kopieren von "Microsoft.Office.Excel.WebUI.dll" und "Microsoft.Office.Excel.WebUI.Internal.dll".

So fügen Sie einen Verweis auf Microsoft.Office.Excel.WebUI.dll hinzu

  1. Klicken Sie im Menü Projekt auf Verweis hinzufügen.

  2. Klicken Sie im Dialogfeld Verweis hinzufügen auf Durchsuchen.

    HinweisHinweis

    Sie können das Dialogfeld Verweis hinzufügen auch im Bereich Projektmappen-Explorer öffnen, indem Sie mit der rechten Maustaste auf Verweise klicken und Verweis hinzufügen auswählen.

  3. Navigieren Sie zum Speicherort von Microsoft.Office.Excel.WebUI.dll.

  4. Wählen Sie Microsoft.Office.Excel.WebUI.dll aus, und klicken Sie auf OK.

  5. Klicken Sie auf Verweis hinzufügen. Dem Projekt wird ein Verweis auf Microsoft.Office.Excel.WebUI.dll hinzugefügt.

Instanziieren eines Webparts

So instanziieren Sie das Excel Web Access-Webpart

  1. Fügen Sie dem Code den Microsoft.Office.Excel.WebUI-Namespace als Direktive hinzu, damit Sie bei Verwendung der Typen in diesem Namespace diese nicht vollständig qualifizieren müssen:

    using Microsoft.Office.Excel.WebUI;
    
    Imports Microsoft.Office.Excel.WebUI
    
  2. Instanziieren und initialisieren Sie das Excel Web Access-Webpart wie folgt:

    
     ExcelWebRenderer ewaWebPart = new ExcelWebRenderer();
    
    Dim ewaWebPart As New ExcelWebRenderer()
    

So zeigen Sie eine Arbeitsmappe programmgesteuert an

  1. In diesem Beispiel akzeptiert die AddWebPart-Methode den Pfad zu einer Excel-Arbeitsmappe als Argument. Der Benutzer gibt den Pfad an, indem er ihn in einem Windows Forms-Textfeld eingibt und dann auf eine Schaltfläche klickt.

    Beispielcode von: Daniel Mullowney, Microsoft Corporation

    public bool AddWebPart(string sitename, string book)
    {
    ...
    }
                private void AddEWAButton_Click(object sender, 
                    EventArgs e)
                {
                    siteurl = textBox1.Text;
                    bookuri = textBox2.Text;
                    succeeded = AddWebPart(siteurl, bookuri);
                    if (succeeded)
                    {
                        MessageBox.Show(
                            success,
                            appname,
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Information);
                        progressBar1.Value = 1;
                    }
                }
    
    Public Function AddWebPart(ByVal sitename As String, ByVal book As String) As Boolean
    ...
    End Function
    Private Sub AddEWAButton_Click(ByVal sender As Object, ByVal e As EventArgs)
            siteurl = textBox1.Text
            bookuri = textBox2.Text
            succeeded = AddWebPart(siteurl, bookuri)
            If succeeded Then
                MessageBox.Show(success, appname, MessageBoxButtons.OK, MessageBoxIcon.Information)
                progressBar1.Value = 1
            End If
    End Sub
    
    Wichtiger HinweisWichtig

    Stellen Sie sicher, dass der Speicherort, an dem die Arbeitsmappe gespeichert ist, vertrauenswürdig ist.

  2. Mit dem folgenden Code können Sie eine Excel-Arbeitsmappe programmgesteuert anzeigen.

    Beispielcode von: Daniel Mullowney, Microsoft Corporation

    ...
    // Instantiate Excel Web Access Web Part.
    // Add an Excel Web Access Web Part in a shared view.
    ExcelWebRenderer ewaWebPart = new ExcelWebRenderer();
    ewaWebPart.WorkbookUri = book;
    progressBar1.PerformStep();
    
    try
    {
        webPartManager.AddWebPart(ewaWebPart, "Left", 0);
    }
    catch (Exception exc)
    {
        MessageBox.Show(
            addWebPartError + "\n" + exc.Message,
            appName,
            MessageBoxButtons.OK,
            MessageBoxIcon.Asterisk);
        progressBar1.Value = 1;
        return b;
    
    'Instantiate Excel Web Access Web Part.
    'Add an Excel Web Access Web Part in a shared view.
    Dim ewaWebPart As New ExcelWebRenderer()
    ewaWebPart.WorkbookUri = book
    progressBar1.PerformStep()
    
    Try
        webPartManager.AddWebPart(ewaWebPart, "Left", 0)
    Catch exc As Exception
        MessageBox.Show(addWebPartError & vbLf & exc.Message, appName, 
            MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
        progressBar1.Value = 1
        Return b
    End Try
    

Beispiel

Das folgende Beispiel ist eine Windows Forms-Anwendung, mit der ein Benutzer Informationen zu einer SharePoint-Website eingeben und eine an einem vertrauenswürdigen Speicherort gespeicherte Excel-Arbeitsmappe programmgesteuert anzeigen kann. Auf der Seite default.aspx der angegebenen Website wird programmgesteuert ein Excel Web Access-Webpart erstellt und die angegebene Excel-Arbeitsmappe angezeigt.

Das Codebeispiel stellt den Code aus den Beispieldateien Form1.cs und Form1.vb dar, die in den obigen Verfahren beschrieben wurden. In diesem Codebeispiel werden zwei Textfelder, eine Statusanzeige und eine Schaltfläche verwendet. Der Code ist lediglich ein Teil des Windows Forms-Projekts. Beispielsweise wird der Code im Zusammenhang mit dem Layout des Formulars nicht gezeigt. 

Beispielcode von: Daniel Mullowney, Microsoft Corporation

namespace AddEWATool
{
    using System;
    using System.Windows.Forms;
    using Microsoft.Office.Excel.WebUI;
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.WebPartPages;

    /// <summary>
    /// Form1 class derived from System.Windows.Forms.
    /// </summary>
    public partial class Form1 : Form
    {
        private string appName = "AddEWATool";
        private string specifyInputError = "Please add a site URL, for example: http://myserver/site/";
        private string openSiteError = "There was a problem with the site name. Please check that the site exists.";
        private string addWebPartError = "There was a problem adding the Web Part.";
        private string successMessage = "Web Part successfully added.";

        /// <summary>
        /// Add the Excel Web Access Web Part to the Default.aspx page of the specified site.
        /// </summary>
        /// <param name="siteName">URL of the SharePoint site</param>
        /// <param name="book">URI to the workbook</param>
        /// <returns>Returns true if the WebPart was successfully added; otherwise, false.</returns>
        public bool AddWebPart(string siteName, string book)
        {
            SPSite site = null;
            SPWeb targetWeb = null;
            SPLimitedWebPartManager webPartManager = null;

            bool b = false;
            progressBar1.Visible = true;
            progressBar1.Minimum = 1;
            progressBar1.Maximum = 4;
            progressBar1.Value = 1;
            progressBar1.Step = 1;

            if (String.IsNullOrEmpty(siteName))
            {
                MessageBox.Show(
                    specifyInputError,
                    appName,
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Asterisk);
                return b;
            }

            try
            {
                try
                {
                    site = new SPSite(siteName);
                    targetWeb = site.OpenWeb();
                }
                catch (Exception exc)
                {
                    MessageBox.Show(
                        openSiteError + "\n" + exc.Message,
                        appName,
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Asterisk);
                    progressBar1.Value = 1;
                    return b;
                }

                progressBar1.PerformStep();

                try
                {
                    // Get the shared Web Part manager on the Default.aspx page.
                    webPartManager = targetWeb.GetLimitedWebPartManager(
                        "Default.aspx",
                        System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared);
                }
                catch (Exception exc)
                {
                    MessageBox.Show(
                        openSiteError + "\n" + exc.Message,
                        appName,
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Asterisk);
                    progressBar1.Value = 1;
                    return b;
                }

                progressBar1.PerformStep();

                // Instantiate Excel Web Access Web Part.
                // Add an Excel Web Access Web Part in a shared view.
                ExcelWebRenderer ewaWebPart = new ExcelWebRenderer();
                ewaWebPart.WorkbookUri = book;
                progressBar1.PerformStep();

                try
                {
                    webPartManager.AddWebPart(ewaWebPart, "Left", 0);
                }
                catch (Exception exc)
                {
                    MessageBox.Show(
                        addWebPartError + "\n" + exc.Message,
                        appName,
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Asterisk);
                    progressBar1.Value = 1;
                    return b;
                }
            }
            finally
            {
                if (site != null)
                {
                    site.Dispose();
                }

                if (targetWeb != null)
                {
                    targetWeb.Dispose();
                }

                if (webPartManager != null)
                {
                    webPartManager.Dispose();
                }
            }

            progressBar1.PerformStep();
            b = true;
            return b;
        }

        /// <summary>
        /// AddEWAButton click handler.
        /// </summary>
        /// <param name="sender">caller</param>
        /// <param name="e">event</param>
        private void AddEWAButton_Click(object sender, EventArgs e)
        {
            string siteUrl = textBox1.Text;
            string bookUri = textBox2.Text;
            bool succeeded = AddWebPart(siteUrl, bookUri);
            if (succeeded)
            {
                MessageBox.Show(
                    successMessage,
                    appName,
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Information);
                progressBar1.Value = 1;
            }
        }
    }
}
Imports System
Imports System.Windows.Forms
Imports Microsoft.Office.Excel.WebUI
Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.WebPartPages

Namespace AddEWATool
    ''' <summary>
    ''' Form1 class derived from System.Windows.Forms.
    ''' </summary>
    Partial Public Class Form1
        Inherits Form

        Private appName As String = "AddEWATool"
        Private specifyInputError As String = "Please add a site URL, for example, http://myserver/site/"
        Private openSiteError As String = "There was a problem with the site name. Please check that the site exists."
        Private addWebPartError As String = "There was a problem adding the Web Part."
        Private successMessage As String = "Web Part successfully added."

        ''' <summary>
        ''' Add the Excel Web Access Web Part to the Default.aspx page of the specified site.
        ''' </summary>
        ''' <param name="siteName">URL of the SharePoint site</param>
        ''' <param name="book">URI to the workbook</param>
        ''' <returns>Returns true if the WebPart was successfully added; otherwise, false.</returns>
        Public Function AddWebPart(ByVal siteName As String, ByVal book As String) As Boolean
            Dim site As SPSite = Nothing
            Dim targetWeb As SPWeb = Nothing
            Dim webPartManager As SPLimitedWebPartManager = Nothing

            Dim b As Boolean = False
            progressBar1.Visible = True
            progressBar1.Minimum = 1
            progressBar1.Maximum = 4
            progressBar1.Value = 1
            progressBar1.Step = 1

            If String.IsNullOrEmpty(siteName) Then
                MessageBox.Show(specifyInputError, appName, MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
                Return b
            End If

            Try
                Try
                    site = New SPSite(siteName)
                    targetWeb = site.OpenWeb()
                Catch exc As Exception
                    MessageBox.Show(openSiteError & vbLf & exc.Message, appName, MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
                    progressBar1.Value = 1
                    Return b
                End Try

                progressBar1.PerformStep()

                Try
                    ' Get the shared Web Part manager on the Default.aspx page.
                    webPartManager = targetWeb.GetLimitedWebPartManager( _
                            "Default.aspx", _
                            System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared)
                Catch exc As Exception
                    MessageBox.Show(openSiteError & vbLf & exc.Message, appName, MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
                    progressBar1.Value = 1
                    Return b
                End Try

                progressBar1.PerformStep()

                'Instantiate Excel Web Access Web Part.
                'Add an Excel Web Access Web Part in a shared view.
                Dim ewaWebPart As New ExcelWebRenderer()
                ewaWebPart.WorkbookUri = book
                progressBar1.PerformStep()

                Try
                    webPartManager.AddWebPart(ewaWebPart, "Left", 0)
                Catch exc As Exception
                    MessageBox.Show(addWebPartError & vbLf & exc.Message, appName, MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
                    progressBar1.Value = 1
                    Return b
                End Try
            Finally
                If Not IsNothing(site) Then
                    site.Dispose()
                End If

                If Not IsNothing(targetWeb) Then
                    targetWeb.Dispose()
                End If

                If Not IsNothing(webPartManager) Then
                    webPartManager.Dispose()
                End If
            End Try

            progressBar1.PerformStep()
            b = True
            Return b
        End Function

        ''' <summary>
        ''' AddEWAButton click handler.
        ''' </summary>
        ''' <param name="sender">caller</param>
        ''' <param name="e">event</param>
        Private Sub AddEWAButton_Click(ByVal sender As Object, ByVal e As EventArgs)
            Dim siteUrl As String = textBox1.Text
            Dim bookUri As String = textBox2.Text
            Dim succeeded As Boolean = AddWebPart(siteUrl, bookUri)
            If succeeded Then
                MessageBox.Show(successMessage, appName, MessageBoxButtons.OK, MessageBoxIcon.Information)
                progressBar1.Value = 1
            End If
        End Sub
    End Class
End Namespace

Robuste Programmierung

Die verwendete Excel-Arbeitsmappe muss sich an einem vertrauenswürdigen Speicherort befinden.

Siehe auch

Aufgaben

Gewusst wie: Suchen und Kopieren von "Microsoft.Office.Excel.WebUI.dll" und "Microsoft.Office.Excel.WebUI.Internal.dll"

Konzepte

Excel Services Alerts

Bekannte Probleme und Tipps für Excel Services