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

MFC Discussion :

impression PS par dll excel


Sujet :

MFC

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut impression PS par dll excel
    Bonjour,
    il me faudrait convertir un fichier au format xls en poscript, voilà le code de ma méthode :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    int   WINAPI FICHEXCEL_ImpressionPS ( ptFICHEXCEL_WORKBOOK ptWb, 
                                         char *cFile)
    {
       ptCFICHEXCEL_WORKBOOK   ptCWb = (ptCFICHEXCEL_WORKBOOK) ptWb; 
       int                     iRetCode  = -1;
       variant_t               vDocumentName = cFile;
       variant_t               vtAppend = VARIANT_FALSE;
       Excel::_WorkbookPtr     ptWorkBook;
     
       /* Recherche du nombre de champs
       */
       try {
     
          /* Recuperation du doument
          */
          ptWorkBook = ptCWb->ptWorkBook; 
     
          /* Impression
          */
          ptApp->Worksheets->PrintOut(&vtMissing,
                                   &vtMissing,&vtMissing,
                                   &vtMissing,&vDocumentName ,&vtPrintToFile,
                                   &vtMissing) ;
          iRetCode = 0;
       } 
       catch ( _com_error &e)
       {
          iRetCode = -1;
       }
     
       return iRetCode;
    }
    où ptApp est de type _ApplicationPtr

    Après avoir exécuté :
    ptApp.CreateInstance
    puis :
    ptApp->WorkBooks->Open

    j'exécute après la méthode FICHEXCEL_ImpressionPS qui m'ouvre une popup en me demandant le nom du fichier de sortie (c'est-à-dire le contenu du paramètre vDocumentName). J'ai bien vérifié le contenu de vDocumentName qui contient le nom du fichier contenu dans la variable d'entrée cFile.
    Ma méthode fonctionne mais je suis obligé de mettre à la main le nom du fichier postcript de sortie. Pourriez-vous me dire comment faire pour que le nom du fichier de sortie passé dans le paramètre vDocumentName soit pris de façon automatique sans passer par la popup ?
    Merci

    NB : j'ai fait sensiblement la même méthode pour une dll de pilotage de Word en utilisant la méthode PrintOut et le traitement se fait sans passer par une popup


    [Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut de plus
    J'ai aussi comparé les tlh word et excel (97) et ce qui me paraît bizarre, c'est que contrairement à la primitive PrintOut de Word, celle d'Excel n'a pas l'air d'avoir besoin d'un nom de fichier en sortie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        HRESULT PrintOut (
            const _variant_t & From = vtMissing,
            const _variant_t & To = vtMissing,
            const _variant_t & Copies = vtMissing,
            const _variant_t & Preview = vtMissing,
            const _variant_t & ActivePrinter = vtMissing,
            const _variant_t & PrintToFile = vtMissing,
            const _variant_t & Collate = vtMissing );

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut toujours le même
    Je m'étais trompé pour le 5ème paramètre.
    J'ai mis le nom de l'imprimante Acrobat Distiller mais je n'ai eu aucun fichier en sortie !
    J'ai donc du pointer un driver d'imprimante en ajoutant un port qui référence un fichier poscript pour que le flux soit redirigé vers ce fichier.
    Il n'y a pas moyen d'utiliser l'imprimante Acro Distiller sans passer par une autre imprimante et un autre port ?
    Quelle clé de la base de registre est utilisée pour le path du fichier ps de retour dans le cas d'Acrobat Distiller (j'ai la version 4.0) ?
    Merci

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Ca n'a aucun rapport avec le C++. Je redirige vers VC++ au cas où, mais c'est très très spécifique ta question...

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/04/2015, 12h29
  2. [Toutes versions] Impression d'une feuille Excel par macro --> Ne pas utiliser l'imprimante par défaut
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/05/2012, 13h41
  3. Réponses: 3
    Dernier message: 03/09/2008, 15h09
  4. [VB]infos complémentaires pour l'impression d'une page excel avec vb
    Par Jacen dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 25/04/2006, 15h57
  5. Jointure Externe sur base ACCESS par Query Excel
    Par marie10 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/03/2006, 11h20

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