Page 1 sur 1

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

Posté : lun. 20 févr. 2017 21:28
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

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

Posté : mar. 21 févr. 2017 01:11
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 ?

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

Posté : mar. 21 févr. 2017 10:57
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