Добавление веб-части Excel Web Access на страницу программным способом

Дата последнего изменения: 8 апреля 2010 г.

Применимо к: SharePoint Server 2010

В этом примере показан программный способ добавления веб-части Excel Web Access на страницу SharePoint. Также описывается программный способ отображения рабочей книги Excel в веб-части Excel Web Access.

В следующем проекте используется Microsoft Visual Studio.

ПримечаниеПримечание

В зависимости от версии Visual Studio и используемых параметров интегрированной среды разработки Visual Studio процесс и шаги по созданию проекта Visual Studio могут незначительно отличаться от описываемых в этом разделе.

ПримечаниеПримечание

Предполагается, что библиотека документов SharePoint уже создана, и для нее выбрано надежное расположение. Дополнительные сведения см. в статье Инструкции по определению надежного расположения.

Добавление ссылки

Далее описывается порядок поиска библиотеки Microsoft.Office.Excel.WebUI.dll и добавления ссылки на нее. Эти же шаги следует повторить для поиска библиотек Microsoft.Office.Excel.WebUI.Internal.dll и Microsoft.SharePoint.dll.

ПримечаниеПримечание

Предполагается, что библиотеки Microsoft.Office.Excel.WebUI.dll и Microsoft.Office.Excel.WebUI.Internal.dll уже скопированы из глобального кэша сборок в произвольную папку. Дополнительные сведения о поиске и копировании библиотек Microsoft.Office.Excel.WebUI.dll и Microsoft.Office.Excel.WebUI.Internal.dll см. в статье Инструкции по поиску и копированию файлов библиотек Microsoft.Office.Excel.WebUI.dll и Microsoft.Office.Excel.WebUI.Internal.dll.

Добавление ссылки на библиотеку Microsoft.Office.Excel.WebUI.dll

  1. В меню Проект выберите пункт Добавить ссылку.

  2. В диалоговом окне Добавление ссылки нажмите кнопку Обзор.

    ПримечаниеПримечание

    Также можно открыть диалоговое окно Добавление ссылки в панели Обозреватель решений, щелкнув правой кнопкой мыши элементы Ссылки и выбрав команду Добавить ссылку.

  3. Перейдите к каталогу, в котором расположен файл Microsoft.Office.Excel.WebUI.dll.

  4. Выберите файл Microsoft.Office.Excel.WebUI.dll и нажмите кнопку ОК.

  5. Нажмите кнопку Добавить ссылку. В проект добавляется ссылка на библиотеку Microsoft.Office.Excel.WebUI.dll.

Создание экземпляра веб-части

Создание экземпляра веб-части Excel Web Access

  1. Добавьте пространство имен Microsoft.Office.Excel.WebUI в раздел директив кода, что позволит использовать типы из этого пространства имен, не указывая их полные имена:

    using Microsoft.Office.Excel.WebUI;
    
    Imports Microsoft.Office.Excel.WebUI
    
  2. Создайте экземпляр и инициализируйте веб-часть Excel Web Access. Для этого выполните следующие действия:

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

Отображение рабочей книги программным способом

  1. В этом примере метод AddWebPart принимает в качестве аргумента путь к рабочей книге Excel. Пользователь вводит этот путь в текстовое поле Windows Forms и нажимает кнопку.

    Образец кода предоставлен: Дэниэл Маллоуни (Daniel Mullowney), корпорация Майкрософт

    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
    
    Важное примечаниеВажно!

    Убедитесь, что каталог, в котором располагается рабочая книга, сохранен как надежное расположение.

  2. Для программного отображения рабочей книги Excel используйте следующий код.

    Образец кода предоставлен: Дэниэл Маллоуни (Daniel Mullowney), корпорация Майкрософт

    ...
    // 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
    

Пример

В следующем примере показан пример приложения Windows Forms, в котором пользователь может вводить данные на сайте SharePoint и отображать рабочую книгу Excel, сохраненную в надежном расположении, программным способом. В этом примере программным способом создается веб-часть Excel Web Access на странице default.aspx указанного сайта, после чего отображается заданная рабочая книга Excel.

Этот пример кода взят из файлов примера Form1.cs и Form1.vb, описанных в предыдущей процедуре. В этом примере кода используются два текстовых поля, индикатор хода выполнения и кнопка. Этот пример представляет собой лишь часть проекта Windows Forms. Например, здесь не показан код макета формы. 

Образец кода предоставлен: Дэниэл Маллоуни (Daniel Mullowney), корпорация Майкрософт

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

Надежное программирование

Используемая рабочая книга Excel должна находиться в надежном расположении.

См. также

Задачи

Инструкции по поиску и копированию файлов библиотек Microsoft.Office.Excel.WebUI.dll и Microsoft.Office.Excel.WebUI.Internal.dll

Концепции

Excel Services Alerts

Известные проблемы и советы по работе со службами Excel