none
Comment sauver le résultat d'une feuille Excel sur le serveur Sharepoint via Web service RRS feed

  • Question

  •  

    Bonjour,

     

    Je suis nouveau sur Excel Service et je désirerais pouvoir sauver le résulat de mon instance Excel sur le serveur Sharepoint.

    Pour l'instant, je fait :

    1. appel d'un template Excel se trouvant sur le portail

    2. Transmets certains parametres via la methode setcel

    3. récupère le résultat via la méthode getcel

     

    Je désirerais une 4ème étape pour sauver mon résulat Excel dans le portail.

     

    Il n'existe pas de méthode Save pour Excel Web Service

     

    "

    Excel Web Services is a front-end interface to Excel Services. In general, Excel Services does not create, modify, or save files—it only reads them to start sessions. Therefore, Excel Web Services does not have a method to save a workbook.

    To save a workbook, you generally use the API of the destination file store. For example:

    ·         If you want to save the Excel file to a Windows SharePoint Services 3.0 document library, use the Windows SharePoint Services 3.0 object model or Web service.

    ·         If you want to save the Excel file to a stream, a local file, or a file share, use the Microsoft .NET Framework libraries.

    ·         If you want to save the Excel file to an HTTP location, use Web Distributed Authoring and Versioning (WebDAV).”

    "

     

    Quelqu'un pourrais t il m'aider ? Je ne sais pas comment appeler le web service Sharepoint et comment l'implémenté

    Voici le code que j'ai implémenté

    Merci d'avance

     

    using System;

    using System.Collections.Generic;

    using System.Text;

    using System.Web.Services.Protocols;

    using System.IO;

     

    namespace CWAPE_Demo_Excel

    {

    class Program

    {

    private const string Workbook = "http://sharepoint:2006/ReportsLibrary/Moulin/Template_n056.xlsx";

    static void Main(string[] args)

    {

    //Create the proxy instance

    ES.ExcelService s = new ES.ExcelService();

    s.SoapVersion = SoapProtocolVersion.Soap12;

    string sessionId = null;

    int numBytes;

    try

    {

    //Make sure your user credentials are used

    s.Credentials = System.Net.CredentialCache.DefaultCredentials;

    ES.Status[] status;

    Console.WriteLine("Opening workbook {0}", Workbook);

    //Open the workbook

    sessionId = s.OpenWorkbook(Workbook, String.Empty, String.Empty, out status);

    Console.WriteLine("Session ID is : {0}", sessionId);

    //Setting cell A1 to in the Workbook

    if (args.Length >= 1)

    {

    string greetingSubject = args[0];

    Console.WriteLine("Setting {0} into Client!C7", greetingSubject);

    s.SetCellA1(sessionId, "Client", "C7", greetingSubject);

    }

    // Getting cell D27 from the workbook

    Console.WriteLine("Reading Cell from Calcul des CV!D27");

    object greeting = s.GetCellA1(sessionId, "Calcul des CV", "D27", true, out status);

    Console.WriteLine("Nombre de CV : {0}", greeting);

     

    }

    catch (SoapException e)

    {

    Console.WriteLine("Got server error : {0}", e.SubCode.Code.Name);

    }

    catch (Exception e)

    {

    Console.WriteLine("Got unknown error : {0}", e);

    }

    finally

    {

    if (!String.IsNullOrEmpty(sessionId))

    {

    Console.WriteLine("Closing the Workbook ...");

    try

    {

    s.CloseWorkbook(sessionId);

    }

    catch

    {

    }

    }

    }

    }

    }

    }

    mardi 8 avril 2008 15:09

Toutes les réponses

  • Tout dépend de ce que vous souhaitez sauvegarder.

     

    S'il s'agit du résultat de votre cellule, une liste SharePoint peut très bien stocker le résultat (ainsi que des métadonnées). Dans ce cas, préparez votre liste SharePoint à l'aide de l'interface, ajoutez lui les colonnes dont vous avez besoin, puis côté code, accédez à votre liste de la façon suivante :

     

    Code Snippet

    using(SPSite site = new SPSite("votre_url")

    {

    using(SPWeb web = site.OpenWeb())

    {

    SPList list = web.Lists["votre_liste"];

    // ajoutez l'élément à votre liste ici

    }

    }

     

    Mais je n'ai peut être pas du tou compris votre besoin... peut être cherchez vous à sauvegarder votre classeur Excel avec les valeurs fixées via le SetCell. Si tel est le cas, vous pouvez écrire le classeur issu de votre traitement en utilisant un simple byte[]. Vous trouverez un exemple ici : http://msdn2.microsoft.com/en-us/library/bb397370.aspx

     

     

    mardi 8 avril 2008 15:17
    Modérateur
  •  

    En fait je cherche a sauver le classeur Excell contenant les valeures transmises via SetCell dans Sharepoint.

    Si je ne me trompe pas, le lien que vous me montrez me permets de récupérer mon classeur via la méthode GetWorkbook et affiche le contenu a l'ecran.

     

    J'arrive bien a sauver le fichier Excell en local mais je n'arrive pas a sauver le fichier Excell dans une URL de sharepoint

     

    Merci pour votre aide

    mardi 8 avril 2008 15:25
  • Dans ce cas :

     

    Code Snippet

    public static void WriteExcelToDocLib(SPList list, byte[] excelData)

    {

    list.RootFolder.Files.Add(excelData);

    }

     

     

    Vous obtiendrez votre byte[] de la même manière que dans le lien précédent (certainement la façon dont vous procéder déjà)
    mardi 8 avril 2008 15:27
    Modérateur
  • Ok merci Sebastien,

     

    J'ai reussi mais en utilisant une reference au service Sharepoint

     

    using Microsoft.SharePoint;

     

    Cela m'oblige si je ne me trompe pas a faire tourner mon exécutable sur le serveur Sharepoint tandis que les autres méthodes (openworkbook,setcell,getcell, ...) font partie d'un Web service et peuvent donc etre appelées depuis une autre machine.

     

    Cela est il aussi possible pour la méthode Add dont tu me parles ?

     

    Encore merci pour ton aide

     

    mercredi 9 avril 2008 07:08
  • Il est possible de passer par les WebServices pour manipuler les listes et leurs éléments. Un exemple rapide : depuis votre navigateur, saisissez l'adresse de l'un de vos sites suivi de /_vti_bin/lists.asmx

     

    Exemple :

     

    http://monappli/monsite/_vti_bin/lists.asmx

     

    Vous disposez donc des WebServices SharePoint pour manipuler la plupart des éléments de manipulable par l'API, mais de façon distante. Sachez également qu'il est possible d'ajouter ses propres WebServices à SharePoint... de quoi aller plus loin si vous ne trouvez pas de webService répondant à votre besoin.

     

    mercredi 9 avril 2008 08:12
    Modérateur