Ajout d'une nouvelle fonctionnalité dans l'UDF oOo_calc

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
marcgforce
Niveau 3
Niveau 3
Messages : 47
Enregistré le : lun. 07 mars 2016 07:20
Status : Hors ligne

Ajout d'une nouvelle fonctionnalité dans l'UDF oOo_calc

#1

Message par marcgforce »

Bonsoir à tous,

Je suis en train d’écrire un script qui entre autre envoi des données vers libre office, j'utilise pour ce faire l'UDF oOOcalc.au3 que l'on trouve sur le forum anglais et disponible sur le forum anglais

j'arrive sans soucis à l'utiliser (avec beaucoup d'essais quand même) mais je souhaiterai avoir la possibilité de piloter le mode de page (portait/paysage) avec ce dernier, mais cette fonction n'y est pas (ou je n'ai pas su la trouver).

Je me suis mis en tête d'essayer de la rajouter, mais après quelques heures de recherches et des morceaux du puzzle plus tard je n'arrive pas à tout imbriquer... pourriez vous m'aider :

Voilà ce que j'ai trouvé ---> ici :
Re: [Calc] Passer du format portrait en paysage

Messagepar Churay » 13 Fév 2012 15:26
Bonjour

Format Paysage :

Code : Tout sélectionner Agrandir
Dim oDocPrt(7)
oDocPrt = thisComponent.getPrinter
oDocPrt(1).Value = com.sun.star.view.PaperOrientation.LANDSCAPE
thisComponent.setPrinter(oDocPrt)



Le retour au format Portrait :

Code : Tout sélectionner Agrandir
oDocPrt(1).Value = com.sun.star.view.PaperOrientation.PORTRAIT
thisComponent.setPrinter(oDocPrt)



Pour info, l'Array qui récupère les Propriétés Printer est constitué de :
0 | com.sun.star.beans.PropertyValue --> Name
1 | com.sun.star.beans.PropertyValue --> PaperOrientation
2 | com.sun.star.beans.PropertyValue --> PaperFormat
3 | com.sun.star.beans.PropertyValue --> PaperSize
4 | com.sun.star.beans.PropertyValue --> IsBusy
5 | com.sun.star.beans.PropertyValue --> CanSetPaperOrientation
6 | com.sun.star.beans.PropertyValue --> CanSetPaperFormat
7 | com.sun.star.beans.PropertyValue --> CanSetPaperSize
cOOordialement
Je ne sais pas si c'est facilement faisable, je vous mets un petit script de test que je réalise en parallèle de mon projet qui me sert à appeler scalc et y envoyer des données:
#include <string.au3>
#include <Array.au3>
#include <StringConstants.au3>
#include <OOoCalc.au3>
;------------------------------------------------
Global $aArray[100][4]
For $i = 0 To 99
   $aArray[$i][0] = _StringRepeat(Chr(Random(65, 68, 1)), 5)
   $aArray[$i][1] = _StringRepeat(Chr(Random(65, 77, 1)), 5)
   $aArray[$i][2] = _StringRepeat(Chr(Random(65, 83, 1)), 5)
   $aArray[$i][3] = _StringRepeat(Chr(Random(65, 90, 1)), 5)
Next
;_ArrayDisplay($aArray)
Global $oOcalc = _OOoCalc_BookNew()

$ofirstcell="A1"
$olastcell =__OOoCalc_CellRCToA1(UBound($aArray)-1,UBound($aArray,2)-1)
_OOoCalc_WriteFromArray($oOcalc,$aArray,$ofirstcell)
$sheetsname= _OOoCalc_SheetNameGet($oOcalc)
;ConsoleWrite($ofirstcell&':'&$olastcell)
_OOoCalc_CreateBorders($oOcalc,$ofirstcell&':'&$olastcell)
for $i = 0 to ubound($aArray)-1
   for $j= 0 to ubound($aArray,2)-1
      $scell= __OOoCalc_CellRCToA1($i,$j)
      ;_OOoCalc_CreateBorders($oOcalc,$scell)
   if _OOoCalc_ReadCell($oOcalc,$scell)="AAAAA" then
      ;ConsoleWrite($scell & @CRLF)
      _OOoCalc_CellSetColors($oOcalc,0x000000, 0x00FF00,"A"&$i+1&":"&"D"&$i+1)

   EndIf
   Next

Next
Merci d'avance
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Ajout d'une nouvelle fonctionnalité dans l'UDF oOo_calc

#2

Message par walkson »

Je ne sais pas si je vais être d'une grande aide mais j'ai trouvé ça

Code : Tout sélectionner

5.6.3. 	Landscape
Listing 5.8: Print the document in landscape mode.
Sub PrintLandscape()
  Dim oOpt(1) as new com.sun.star.beans.PropertyValue

  oOpt(0).Name = "Name"
  oOpt(0).Value = "<insert_your_printername_here>"
  oOpt(1).Name = "PaperOrientation"
  oOpt(1).Value = com.sun.star.view.PaperOrientation.LANDSCAPE
  ThisComponent.Printer = oOpt()
End Sub
à cette adresse https://www.google.fr/url?sa=t&rct=j&q= ... Cg&cad=rja
J'ai remarqué aussi sur l'UDF cette fonction
; #INTERNAL_USE_ONLY# ===========================================================================================================
; Name ..........: __OOoCalc_SetPropertyValue
; Description ...: Creates a property value struct object.
; Syntax ........: __OOoCalc_SetPropertyValue($sName, $vValue)
; Parameters ....: $sName  - Property name.
;                  $vValue - Property value.
; Return values .: Returns the PropertyValue object
; Author ........: Leagnus, GMK
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......:
; ===============================================================================================================================
Func __OOoCalc_SetPropertyValue($sName, $vValue)
   Local $oOOoCalc_COM_ErrorHandler = ObjEvent("AutoIt.Error", __OOoCalc_ComErrorHandler_InternalFunction)
    #forceref $oOOoCalc_COM_ErrorHandler
   If Not IsString($sName) Then Return SetError($_OOoCalcStatus_InvalidDataType, 1, 0)
   Local $oSM = ObjCreate("com.sun.star.ServiceManager")
   If Not IsObj($oSM) Then Return SetError($_OOoCalcStatus_GeneralError, 0, 0)
   Local $oReturn = $oSM.Bridge_GetStruct('com.sun.star.beans.PropertyValue')
   If Not IsObj($oReturn) Then Return SetError($_OOoCalcStatus_GeneralError, 0, 0)
   $oReturn.Name = $sName
   $oReturn.Value = $vValue
   Return SetError($_OOoCalcStatus_Success, 0, $oReturn)
EndFunc   ;==>__OOoCalc_SetPropertyValue
L'un dans l'autre, il y a peut être quelque chose à faire ?
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
marcgforce
Niveau 3
Niveau 3
Messages : 47
Enregistré le : lun. 07 mars 2016 07:20
Status : Hors ligne

Re: Ajout d'une nouvelle fonctionnalité dans l'UDF oOo_calc

#3

Message par marcgforce »

J'ai essayé de construire ça, mais j'ai l'impression de jouer à l'apprenti sorcier, vu que je ne maitrise pas du tout ce que je fais, si un expert de ce genre de code passe par ici, peut-il corriger ce qui ne va pas ?,
func _OOoCalc_PageOrientation(ByRef $oObj,$vSheet=-1,$vOrientation="LANDSCAPE")
      Local $oOOoCalc_COM_ErrorHandler = ObjEvent("AutoIt.Error", __OOoCalc_ComErrorHandler_InternalFunction)
    #forceref $oOOoCalc_COM_ErrorHandler
   If Not IsObj($oObj) Then Return SetError($_OOoCalcStatus_InvalidDataType, 1, 0)
   If Not IsInt($vSheet) And Not IsString($vSheet) Then Return SetError($_OOoCalcStatus_InvalidDataType, 2, 0)
   if Not IsString($vOrientation) Then Return SetError($_OOoCalcStatus_InvalidDataType, 2, 0)
   If $vSheet <> Default Then _OOoCalc_SheetActivate($oObj, $vSheet)
   Local $oPaperOrientation = __OOoCalc_SetPropertyValue("PaperOrientation", $vOrientation)
   $oPaperOrientation.name
   $oPaperOrientation.PaperOrientation.LANDSCAPE
   Return SetError($_OOoCalcStatus_Success, 0, 1)
EndFunc
Répondre