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

Langage Delphi Discussion :

OpenOffice calc : Zone impression


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 46
    Points : 50
    Points
    50
    Par défaut OpenOffice calc : Zone impression
    J'ai une feuille OpenOffice cal avec des données qui vont jusqu'à la colonne "AB". Je ne dois imprimer que jusqu'à la colonne "K" et de la ligne "1" à la ligne "33".
    L'utilisation de la propriété "PageScale" qui, pour moi évoquerait un zoom n'a pas d'effet ; l'impression me donne toujours 2 pages c'est-a-dire toutes les colonnes et lignes de la feuille.
    Il y a-t-il comme sous Excel une fonction délimitant la zone d'impression ?
    Sous Excel le code est celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Procedure Zone_A_Impression(var OLE_DeExcel: variant;ZoneSelectionnee: String);
    Begin
       OLE_Excel.ActiveSheet.PageSetup.PrintArea := ZoneSelectionnee;
    End;
    Voici le code que j'utilise pour l'impression de la feuille OpenOffice calc :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    procedure ImprimerPagesDeA(OOoNomFeuille: variant; De, A, nbPages : integer;  Zoom_Page : integer=100);
    Var
      PrinterOpt : variant;
      PropertyValue : Variant;
      Size:    Variant;
      Width:  Integer;
     
    begin
       CoreReflection := OpenOffice.createInstance('com.sun.star.reflection.CoreReflection');
       CoreReflection
               .forName('com.sun.star.beans.PropertyValue')
               .createObject(propertyValue);
     
     
      printerOpt := VarArrayCreate([0, 1], varVariant);
      propertyValue.Name := 'Pages';
      propertyValue.Value := IntToStr(De) + '-' + IntToStr(A); //'1-2';
      printerOpt[0] := propertyValue;
     
      propertyValue.Name := 'CopyCount';
      propertyValue.Value := NbPages; //2;
      printerOpt[1] := propertyValue;
     
      PageStyleCollection := DocumentOpenOffice.StyleFamilies.getByName('PageStyles');
      PropertySet := PageStyleCollection.getByName(OOoMaFeuille.PageStyle); 
      if not PropertySet.IsLandscape then
      begin
        //.. c'est dans ce bloc qu'il faut inclure ttes les propriétés de style de
        //.. page dont on a besoin
        Size := PropertySet.Size;
        Width := Size.Width;
        Size.Width := Size.Height;
        Size.Height := Width;
     
        PropertySet.Size := Size;
        PropertySet.IsLandscape := True;
     
        PropertySet.PageScale := Zoom_Page;//.. Zoom à 80% n'a pas l'air de marcher
     
        PropertySet.HeaderIsOn := False; //.. Pas d'en-tête (..nom de la feuille..)
        PropertySet.FooterIsOn := False; //.. Pas de bas de page (..N° de la page..)
     
        PropertySet.CenterVertically := True; //.. Centrage vertical du tableau
        PropertySet.CenterHorizontally := True; //.. Centrage horizoncal du tableau
     
        PropertySet.TopMargin := 500; //.. Marge partie haut de page en 1/100 de mm
        PropertySet.BottomMargin := 500; //.. Marge partie bas de page en 1/100 de mm
    end;
     
    DocumentOpenOffice.print(PrinterOpt);

  2. #2
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      dim args2(2) as new com.sun.star.beans.PropertyValue
      args2(0).Name = "PrintArea"
      args2(0).Value = "$A$2:$K$20" 
      args2(1).Name = "PrintRepeatRow"
      args2(1).Value = "$A$1:$K$1"
      args2(2).Name = "PrintRepeatCol"
      args2(2).Value = ""
      dispatcher.executeDispatch(document, ".uno:ChangePrintArea", "", 0, args2())
    A adapter

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 46
    Points : 50
    Points
    50
    Par défaut OpenOffice calc : Zone impression
    A defluc :

    merci pour ta réponse rapide. Je ne suis pas un adepte du basic mais je vais devoir essayer de traduire ce code pour être utilisable sur environnement delphi.
    C'est vrai que je n'ai pas préciser sur quel environnement je développe : DELPHI 7.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 46
    Points : 50
    Points
    50
    Par défaut OpenOffice calc : Zone impression
    J'ai essayé de rajouter le code de "defluc" comme ceci mais il n'y a aucun changement à l'impression qui me sort toujours les 2 pages de la feuille calc qui va de la colonne "A1" à "AB" et sur plusieurs lignes. Je ne voudrais imprimer que les colonnes allant de "A" à "K" et quelques lignes. Peut-être que je n'ai pas bien traduit ce code de "defluc" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    printerOpt := VarArrayCreate([0, 2], varVariant);
      propertyValue.Name := 'Pages';
      propertyValue.Value := IntToStr(De) + '-' + IntToStr(A); //'1-2';
      printerOpt[0] := propertyValue;
     
      propertyValue.Name := 'CopyCount';
      propertyValue.Value := NbPages; //2;
      printerOpt[1] := propertyValue;
     
      propertyValue.Name := 'PrintArea';
      propertyValue.Value := '$A$1:$K$24';
      printerOpt[2] := propertyValue; 
      ExecDispatch('.uno:ChangePrintArea', dummyArray);
    Si quelqu'un a une idée pour me venir en aide.
    Merci d'avance. J'utilise Delphi 7.

Discussions similaires

  1. BCB, OpenOffice, OLE et impression (problème propertyvalue)
    Par Shin_no_Noir dans le forum C++Builder
    Réponses: 7
    Dernier message: 10/07/2007, 17h17
  2. Réponses: 4
    Dernier message: 04/07/2007, 13h42
  3. [OpenOffice][Tableur] macro openoffice.org pour openoffice.calc
    Par calix dans le forum OpenOffice & LibreOffice
    Réponses: 4
    Dernier message: 15/06/2007, 21h51
  4. Delphi et OpenOffice calc
    Par Jean-François PETIT dans le forum Delphi
    Réponses: 2
    Dernier message: 24/10/2006, 15h43
  5. openoffice calc dans vb 6
    Par m_didi dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 30/08/2006, 14h03

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