IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Utilisation de OPENXML [WD24]


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Profil pro
    CEO
    Inscrit en
    Juillet 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : CEO

    Informations forums :
    Inscription : Juillet 2005
    Messages : 19
    Points : 18
    Points
    18
    Par défaut Utilisation de OPENXML
    Bonjour tout le monde,

    je me casse la tête depuis plusieurs jours sur l'utilisation de l'assemblage .net OPENXML sur Windev 24 pour supprimer l'automation (source de plusieurs problèmes...).

    J'essaie pour le moment de créer une fichier Excel vide comme indiqué dans la doc ici : https://docs.microsoft.com/en-us/off...ng-a-file-name en me basant sur le code c# suivant :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
        public static void CreateSpreadsheetWorkbook(string filepath)
        {
            // Create a spreadsheet document by supplying the filepath.
            // By default, AutoSave = true, Editable = true, and Type = xlsx.
            SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.
                Create(filepath, SpreadsheetDocumentType.Workbook);
     
            // Add a WorkbookPart to the document.
            WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
            workbookpart.Workbook = new Workbook();
     
            // Add a WorksheetPart to the WorkbookPart.
            WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
            worksheetPart.Worksheet = new Worksheet(new SheetData());
     
            // Add Sheets to the Workbook.
            Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.
                AppendChild<Sheets>(new Sheets());
     
            // Append a new worksheet and associate it with the workbook.
            Sheet sheet = new Sheet() { Id = spreadsheetDocument.WorkbookPart.
                GetIdOfPart(worksheetPart), SheetId = 1, Name = "mySheet" };
            sheets.Append(sheet);
     
            workbookpart.Workbook.Save();
     
            // Close the document.
            spreadsheetDocument.Close();
        }

    Je suis bloqué sur le portage de la ligne " WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();"

    Mon code Windev actuel est celui ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    QUAND EXCEPTION DANS
     
    	// https://docs.microsoft.com/en-us/office/open-xml/how-to-create-a-spreadsheet-document-by-providing-a-file-name
     
    	_SpreadsheetDocument est un SpreadsheetDocument dynamique 
    	_SpreadsheetDocument <- SpreadsheetDocument.Create("test.xlsx", SpreadsheetDocumentType.Workbook);
     
    	_WorkbookPart est un WorkbookPart dynamique 
    	_WorkbookPart <- _SpreadsheetDocument.AddWorkbookPart();
    	_WorkbookPart.Workbook = new Workbook();
     
    	_WorksheetPart est un WorksheetPart dynamique
    	_WorksheetPart <- _WorkbookPart."AddNewPart<WorksheetPart>"(); // ICI se trouve l'erreur
     
    	_WorkbookPart.Workbook.Save(_WorkbookPart);
     
    	// Close the document.
    	_SpreadsheetDocument.Close();
     
     
    FAIRE
    	Trace(ExceptionInfo(errComplet))
    FIN

    A l'exécution de la ligne _WorksheetPart <- _WorkbookPart."AddNewPart<WorksheetPart>"(); j'ai le message d'erreur suivant :

    Appel WL :
    Traitement de 'Fin d'initialisation de TEST' (TEST), ligne 15

    Que s'est-il passé ?
    L'invocation de la méthode <AddNewPart<DocumentFormat.OpenXml.Packaging.WorksheetPart>()> du type <WorkbookPart> a échoué
    L'invocation de la méthode <AddNewPart<DocumentFormat.OpenXml.Packaging.WorksheetPart>()> du type <WorkbookPart> a échoué

    Code erreur : 200002
    Niveau : erreur fatale

    Dump de l'erreur du module 'wd240net4.dll' (24.0.73.0).
    Identifiant des informations détaillées (.err) : 200002
    Informations supplémentaires :
    EIT_PILEWL :
    Fin d'initialisation de TEST (TEST), ligne 15
    EIT_DATEHEURE : 21/03/2021 21:22:06
    EIT_TYPE_WDFILE : <2>
    EIT_IDCODE : <34>
    J'épluche la doc Windev https://doc.pcsoft.fr/fr-FR/?2012002, je me dis qu'il y a un problème de syntaxe quelque part, mais là je ne trouve pas.....

    Avez vous une idée svp ? Est-ce que quelqu'un d'entre vous à déjà utiliser la librairie OPENXML ?


    merci
    :)

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 942
    Points : 1 933
    Points
    1 933
    Par défaut
    Bonjour,

    Je n'ai jamais utilisé OpenXML et je sais que Windev est parfois capricieux avec le .Net. Parc ontre je sais qu'il est possible de coder une procedure globale directement en C#. Tu trouveras peut-être la sortie par là.
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  3. #3
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Les méthode génériques sont tarabiscotées.
    Le problème ne viendrait-il pas d'un oubli de passage de paramètre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    _WorksheetPart <- _WorkbookPart."AddNewPart<WorksheetPart>"(_WorksheetPart)
    En ce qui concerne le codage direct en C# la doc est ici

    Une autre solution consiste à créer un assemblage "bidon" comme expliqué https://www.fekwx.com/threads/classe...08/#post-28884
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  4. #4
    Membre à l'essai
    Profil pro
    CEO
    Inscrit en
    Juillet 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : CEO

    Informations forums :
    Inscription : Juillet 2005
    Messages : 19
    Points : 18
    Points
    18
    Par défaut
    Bonjour philouZ & Voroltinquo,

    Merci à vous deux pour vos retours, j'ai eu un retour de PCSOFT sur le sujet

    " Après analyse, il s'avère que l'appel de cette méthode ne pourra pas se faire depuis le WLangage.
    Il s'agit d'une méthode générique. L'appel de méthodes génériques n'est pas implémenté dans le WLangage.

    Une solution de contournement consisterait à développer un wrapper en C#, c'est à dire un assemblage DOTNET "intermédiaire", qui s'interfacera entre le WLangage et l'assemblage OpenXML.
    Cette possibilité nécessite une connaissance du C#.

    D'autre part une possibilité d'évolution en vue de gérer les méthodes génériques depuis le WLangage va être étudiée très rapidement (en version 26)."

    Malgré l'existence des appels génériques dans la doc pcsoft, il semble que cela soit un cas particulier non pris en compte pour le moment.

    Merci pour vos retours, je pense avoir identifier une autre librairie plus simple d'utilisation : https://www.nuget.org/packages/NPOI.Excel/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser le SDK OpenXML en VBScript
    Par SfJ5Rpw8 dans le forum VBScript
    Réponses: 3
    Dernier message: 02/06/2009, 21h34
  2. Utilisation de openxml
    Par mandaillou dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/01/2006, 10h14
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo