Procedimiento para agregar mediante programación un elemento web de Excel Web Access a una página
Última modificación: jueves, 08 de abril de 2010
Hace referencia a: SharePoint Server 2010
En este ejemplo se muestra cómo agregar mediante programación un elemento web de Excel Web Access a una página de SharePoint. También se muestra cómo mostrar un libro de Excel mediante programación en un elemento web de Excel Web Access.
El siguiente proyecto usa Microsoft Visual Studio.
Nota
El proceso y los pasos para crear un proyecto de Visual Studio pueden ser ligeramente distintos a los procedimientos que se muestran en este tema según cuál sea la versión de Visual Studio y la configuración del entorno de desarrollo integrado (IDE) de Visual Studio que use.
Nota
Se supone que ya ha creado una biblioteca de documentos de SharePoint y que la ha convertido en una ubicación de confianza. Para obtener más información, vea Procedimiento para confiar en una ubicación.
Agregar una referencia
Los pasos siguientes muestran cómo buscar el archivo Microsoft.Office.Excel.WebUI.dll y cómo agregar una referencia a él. Repita estos mismos pasos para Microsoft.Office.Excel.WebUI.Internal.dll y Microsoft.SharePoint.dll.
Nota
Se supone que ya ha copiado Microsoft.Office.Excel.WebUI.dll y Microsoft.Office.Excel.WebUI.Internal.dll de la memoria caché global de ensamblados en una carpeta de su elección. Para obtener más información acerca de cómo buscar y copiar Microsoft.Office.Excel.WebUI.dll y Microsoft.Office.Excel.WebUI.Internal.dll, vea Procedimiento para buscar y copiar Microsoft.Office.Excel.WebUI.dll y Microsoft.Office.Excel.WebUI.Internal.dll.
Para agregar una referencia a Microsoft.Office.Excel.WebUI.dll
En el menú Proyecto, haga clic en Agregar referencia.
En el cuadro de diálogo Agregar referencia, haga clic en Examinar.
Nota
También puede abrir el cuadro de diálogo Agregar referencia en el panel Explorador de soluciones, para ello haga clic con el botón secundario en Referencias y seleccione Agregar referencia.
Vaya a la ubicación de Microsoft.Office.Excel.WebUI.dll.
Seleccione Microsoft.Office.Excel.WebUI.dll y haga clic en Aceptar.
Haga clic en Agregar referencia. Se agregará al proyecto una referencia a Microsoft.Office.Excel.WebUI.dll.
Crear instancias de un elemento web
Para crear una instancia del elemento web de Excel Web Access
Agregue el espacio de nombres Microsoft.Office.Excel.WebUI como una directiva al código para que, cuando use los tipos de este espacio de nombres, no sea necesario escribir el nombre completo:
using Microsoft.Office.Excel.WebUI;
Imports Microsoft.Office.Excel.WebUI
Cree instancias del elemento web de Excel Web Access e inicialícelo de la manera siguiente:
ExcelWebRenderer ewaWebPart = new ExcelWebRenderer();
Dim ewaWebPart As New ExcelWebRenderer()
Para mostrar un libro mediante programación
En este ejemplo, el método AddWebPart toma la ruta de acceso a una ubicación de un libro de Excel como un argumento. El usuario proporciona la ruta de acceso; para ello, debe escribir información en un cuadro de texto de Windows Forms y hacer clic en un botón.
Código de ejemplo proporcionado por: 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
Importante Asegúrese de que la ubicación donde se ha guardado el libro es una ubicación de confianza.
Puede mostrar un libro de Excel mediante programación con el siguiente código.
Código de ejemplo proporcionado por: 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
Ejemplo
El siguiente ejemplo consiste en una aplicación de Windows Forms que permite al usuario escribir información en un sitio de SharePoint y mostrar un libro de Excel guardado en una ubicación de confianza mediante programación. Así, se crea mediante programación un elemento web de Excel Web Access en la página default.aspx del sitio especificado y se muestra el libro de Excel especificado.
El ejemplo de código es el código de los archivos de ejemplo Form1.cs y Form1.vb descritos en los procedimientos anteriores. El código de ejemplo usa dos cuadros de texto, una barra de progreso y un botón. El código es solo una parte del proyecto de Windows Forms. Por ejemplo, no se muestra el código que incluye el diseño del formulario.
Código de ejemplo proporcionado por: 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
Programación sólida
El libro de Excel que va a usar debe estar en una ubicación de confianza.