Добавление веб-части 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
В меню Проект выберите пункт Добавить ссылку.
В диалоговом окне Добавление ссылки нажмите кнопку Обзор.
Примечание Также можно открыть диалоговое окно Добавление ссылки в панели Обозреватель решений, щелкнув правой кнопкой мыши элементы Ссылки и выбрав команду Добавить ссылку.
Перейдите к каталогу, в котором расположен файл Microsoft.Office.Excel.WebUI.dll.
Выберите файл Microsoft.Office.Excel.WebUI.dll и нажмите кнопку ОК.
Нажмите кнопку Добавить ссылку. В проект добавляется ссылка на библиотеку Microsoft.Office.Excel.WebUI.dll.
Создание экземпляра веб-части
Создание экземпляра веб-части Excel Web Access
Добавьте пространство имен Microsoft.Office.Excel.WebUI в раздел директив кода, что позволит использовать типы из этого пространства имен, не указывая их полные имена:
using Microsoft.Office.Excel.WebUI;
Imports Microsoft.Office.Excel.WebUI
Создайте экземпляр и инициализируйте веб-часть Excel Web Access. Для этого выполните следующие действия:
ExcelWebRenderer ewaWebPart = new ExcelWebRenderer();
Dim ewaWebPart As New ExcelWebRenderer()
Отображение рабочей книги программным способом
В этом примере метод 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
Важно! Убедитесь, что каталог, в котором располагается рабочая книга, сохранен как надежное расположение.
Для программного отображения рабочей книги 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 должна находиться в надежном расположении.