Partager via


Procédure : ajouter par programme un composant WebPart Excel Web Access à une page

Cet exemple montre comment ajouter par programme un composant WebPart Excel Web Access à une page SharePoint. Il montre également comment afficher par programme un classeur Excel dans un composant WebPart Excel Web Access.

Le projet suivant utilise Microsoft Visual Studio 2005.

Notes

Selon les paramètres que vous utilisez dans l'environnement de développement intégré Visual Studio, le processus de création d'un projet peut légèrement varier.

Notes

Il est supposé que vous avez déjà créé une bibliothèque de documents SharePoint et que vous en avez fait un emplacement approuvé. Pour plus d'informations, voir Procédure : approuver un emplacement et Procédure : approuver les emplacements des classeurs à l'aide de scripts.

Ajout d'une référence

Les étapes suivantes montrent comment localiser Microsoft.Office.Excel.WebUI.dll et comment y ajouter une référence.

Notes

Il est supposé que vous avez déjà copié Microsoft.Office.Excel.WebUI.dll depuis le Global Assembly Cache vers un dossier de votre choix. Pour plus d'informations sur la localisation et la copie de Microsoft.Office.Excel.WebUI.dll, voir Procédure : trouver et copier Microsoft.Office.Excel.WebUI.dll.

Pour ajouter une référence à Microsoft.Office.Excel.WebUI.dll

  1. Sur le menu Projet, cliquez sur Ajouter une référence.

  2. Dans la boîte de dialogue Ajouter une référence, cliquez sur Parcourir.

    Notes

    Vous pouvez aussi ouvrir la boîte de dialogue Ajouter une référence dans le volet Explorateur de solutions en cliquant avec le bouton droit sur Références et en sélectionnant Ajouter une référence.

  3. Accédez à l'emplacement de Microsoft.Office.Excel.WebUI.dll.

  4. Sélectionnez Microsoft.Office.Excel.WebUI.dll et cliquez sur OK.

  5. Cliquez sur Ajouter une référence ; une référence à Microsoft.Office.Excel.WebUI.dll sera alors ajoutée à votre projet.

Instanciation d'un composant WebPart

Pour instancier le composant WebPart Excel Web Access

  1. Ajoutez l'espace de noms Microsoft.Office.Excel.WebUI en tant que directive à votre code, de façon à ce que, quand vous utilisez les types de cet espace de noms, il ne soit pas nécessaire de les qualifier complètement :

    using Microsoft.Office.Excel.WebUI;
    
  2. Instanciez et initialisez le composant WebPart Excel Web Access comme suit :

    // Instantiate ExcelWebRenderer class
     ExcelWebRenderer ewaWebPart = new ExcelWebRenderer();
    

Pour afficher un classeur par programme

  1. Dans cet exemple, la méthode AddWebPart reçoit le chemin d'accès à un emplacement de classeur Excel en tant qu'argument. L'utilisateur fournit le chemin d'accès en le tapant dans une zone de texte de formulaire Windows et en cliquant sur un bouton :

    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;
                    }
                }
    

    Important

    Vérifiez que l'emplacement où le classeur est enregistré est un emplacement approuvé.

    Notes

    Vous pouvez obtenir le chemin d'accès à un classeur dans Microsoft Office SharePoint Server 2007 en cliquant avec le bouton droit sur le classeur et en sélectionnant Copier le raccourci. Vous pouvez aussi sélectionner Propriétés et copier le chemin d'accès au classeur à partir de là.

  2. Vous pouvez afficher un classeur Excel par programme à l'aide du code suivant :

    using Microsoft.Office.Excel.WebUI;
    namespace AddEWATool
    {
        public partial class Form1 : Form
        {
             ...
    
               /// <param name="sitename">URL of the 
               ///Windows SharePoint Services site</param>
               /// <param name="book">URI to the workbook</param>
            public bool AddWebPart(string sitename, string book)
            {
                ...
                ExcelWebRenderer ewaWebPart = new ExcelWebRenderer();
                ewaWebPart.WorkbookUri = book;
    

Exemple

using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace AddEWATool
{
    /// <summary>
    /// Program class 
    /// </summary>
    internal static class Program
    {
        /// <summary>
        /// The main entry point for the application. 
        /// </summary>
        /// <param name="args">arguments</param>
        /// <returns>int</returns>
        [STAThread]
        public static int Main(string[] args)
        {
            //Application.EnableVisualStyles();
            if (args.Length == 0)
            {
                Application.Run(new Form1());
                return 1;
            }
            else 
            {
                Commandline comm = new Commandline();
                int worked = comm.CommandLineAddWebPart(args);
                return worked;
            }
        }
    }
} 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using Microsoft.Office.Excel.WebUI;
namespace AddEWATool
{
    /// <summary>
    /// Form1 class derived from System.Windows.Forms
    /// </summary>
    public partial class Form1 : Form
    {
        private string siteurl;
        private string bookuri;
        private bool succeeded;

        private string appname = "AddEWATool";
        private string specifyinput = "Please add a site URL, 
            for example, http://myserver/site/";
        private string siteproblem = "There was a problem with
            the site name. Please check that the site exists.";
        private string addproblem = "There was a problem adding the 
            Web Part.";
        private string success = "Web Part successfully added.";
        private SPSite site;
        private SPWeb TargetWeb;
        private SPWebPartCollection sharedWebParts;
        /// <summary>
        /// Class Constructor
        /// </summary>
        public Form1()
        {
            InitializeComponent();
        }
        /// <summary>
        /// Method to add the Excel Web Access Web Part
        /// </summary>
        /// <param name="sitename">URL of the 
        ///Windows SharePoint Services site</param>
        /// <param name="book">URI to the workbook</param>
        /// <returns>bool</returns>"
        public bool AddWebPart(string sitename, string book)
        {
            bool b = false;
            progressBar1.Visible = true;
            progressBar1.Minimum = 1;
            progressBar1.Maximum = 4;
            progressBar1.Value = 1;
            progressBar1.Step = 1;

            if (String.IsNullOrEmpty(sitename))
            {
                MessageBox.Show(
                    specifyinput,
                    appname,
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Asterisk);
                return b;
            }
                try
            {
                site = new SPSite(sitename);
                TargetWeb = site.OpenWeb();
            }
            catch (Exception exc)
            {
                MessageBox.Show(
                    siteproblem + "\n" + exc.Message,
                    appname,
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Asterisk);
                    progressBar1.Value = 1;
                 return b;
                }
                progressBar1.PerformStep();
                //Get the collection of shared Web Parts 
                //on the home page
                //Log.Comment("Get the collection of 
                //personal Web Parts on default.aspx");
                try
                {
                   sharedWebParts = 
                     TargetWeb.GetWebPartCollection("Default.aspx", 
                     Microsoft.SharePoint.WebPartPages.Storage.Shared);
                }
                catch (Exception exc)
                {
                    MessageBox.Show(
                        siteproblem + "\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();
                progressBar1.PerformStep();
                ewaWebPart.ZoneID = "Left";
                ewaWebPart.WorkbookUri = book;
                try
                {
                    sharedWebParts.Add(ewaWebPart);
                }
                catch (Exception exc)
                {
                    MessageBox.Show(
                        addproblem + "\n" + exc.Message,
                        appname,
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Asterisk);
                    progressBar1.Value = 1;
                    return b;
                }
                    progressBar1.PerformStep();
                    b = true;
                    return b;
                }
                /// <summary>
                /// Button1 click handler
                /// </summary>
                /// <param name="sender">caller</param>
                /// <param name="e">event</param>
            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;
                }
            }
        
    } 

Programmation fiable

Le classeur Excel que vous utilisez doit se trouver à un emplacement approuvé.

Voir aussi

Autres ressources

Procédure : approuver les emplacements des classeurs à l'aide de scripts
Alertes Excel Services
Problèmes connus et conseils relatifs à Excel Services
Procédure : trouver et copier Microsoft.Office.Excel.WebUI.dll