Contenu

# Service SFDocuments.Chart

Le service Chart fournit un ensemble de propriétés et de méthodes pour gérer les diagrammes dans les documents Calc. Avec ce service il est possible de :

- Accéder aux objets diagrammes dans les documents Calc et manipuler leurs propriétés.

- Créer et insérer de nouveaux diagrammes dans un document Calc.

- Exporter les diagrammes comme fichiers d'image.

## Noms des diagrammes

Les diagrammes peuvent avoir deux noms différents :

- Un nom interne donné par LibreOffice dès la création de l'objet diagramme (généralement "Objet 1", "Objet 2" et ainsi de suite).

- Un nom défini par l'utilisateur, qui peut être défini en cliquant avec le bouton droit sur le diagramme et en choisissant Nom dans le menu contextuel.

Le service Chart utilise principalement le nom défini par l'utilisateur pour accéder à un objet diagramme. S'il n'existe pas, le nom interne est utilisé.

## Invocation du service

Avant d'utiliser le service Chart, la bibliothèque ScriptForge doit être chargée ou importée :

• Les macros Basic nécessitent de charger la bibliothèque ScriptForge à l'aide de l'instruction suivante :
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Les scripts Python nécessitent un import depuis le module scriptforge :
from scriptforge import CreateScriptService

Le service Chart est instancié à partir d'une instance de service Calc à l'aide des méthodes Charts ou CreateChart.

##### En Basic :

L'exemple ci-dessous crée une instance de service Chart à partir d'un diagramme existant dans le document Calc actif :

        GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
        Dim oDoc as Object, oChart as Object
        Set oDoc = CreateScriptService("Calc")
        Set oChart = oDoc.Charts("Sheet1", "Object 1")

L'exemple suivant instancie le service Chart en créant un nouvel objet diagramme basé sur les données contenues dans la plage "Sheet1.A1:C10".

        Dim oDoc as Object, oChart as Object
        Set oDoc = CreateScriptService("Calc")
        Set oChart = oDoc.CreateChart("My Chart", "Sheet1", "Sheet1.A1:C10")

Lisez la description de la méthode CreateChart pour en savoir plus sur ses arguments.

##### En Python

Les exemples ci-dessus peuvent être écrits en Python comme suit :

        from scriptforge import CreateScriptService
        doc = CreateScriptService("Calc")
        chart = doc.Charts("Sheet1", "Object 1")

        doc = CreateScriptService("Calc")
        chart = doc.CreateChart("My Chart", "Sheet1", "Sheet1.A1:C10")

## Propriétés

Nom | Lecture seule | Type | Description
--- | --- | --- | ---
ChartType | Non | String | Spécifie le type de diagramme sous forme de chaîne pouvant prendre l'une des valeurs suivantes : "Pie", "Bar", "Donut", "Column", "Area", "Line", "XY", "Bubble", "Net ".
Deep | Non | Boolean | Lorsque True indique que le diagramme est en trois dimensions et que chaque série est disposée dans la direction z. Lorsque False, les séries sont organisées en considérant seulement deux dimensions.
Dim3D | Non | Boolean or String | Spécifie si le diagramme est affiché avec des éléments 3D. Si la valeur est une chaîne, elle doit être soit "Bar", "Cylinder", "Cone" ou "Pyramid". Si la valeur booléenne True est spécifiée, le diagramme est affiché à l'aide de barres 3D.
Exploded | Non | Numeric | Spécifie de combien de segments de camembert sont décalés du centre du diagramme en pourcentage du rayon. Applicable aux camemberts et aux diagrammes en anneau uniquement.
Filled | Non | Boolean | Lorsque True, spécifie un diagramme en toile rempli. Applicable aux diagrammes en toile uniquement.
Legend | Non | Boolean | Spécifie si le diagramme a ou non une légende.
Percent | Non | Boolean | Lorsque True, les séries de diagrammes sont empilées et chaque catégorie totalise jusqu'à 100 %. Applicable aux graphiques en aires, à barres, à bulles, à colonnes et en toile.
Stacked | Non | Boolean | Lorsque True, les séries de diagrammes sont empilées. Applicable aux diagrammes en aires, à barres, à bulles, à colonnes et en toile.
Title | Non | String | Spécifie le titre principal du diagramme.
XTitle | Non | String | Spécifie le titre de l'axe X.
YTitle | Non | String | Spécifie le titre de l'axe Y.
XChartObj | Oui | Objet UNO | Renvoie l'objet représentant le diagramme, qui est une instance de la classe ScChartObj .
XDiagram | Oui | Objet UNO | Renvoie l'objet représentant le schéma du diagramme com.sun.star.chart.XDiagram
XShape | Oui | Objet UNO | Renvoie l'objet représentant la forme du diagramme com.sun.star.drawing.XShape.
XTableChart | Oui | Objet UNO | Renvoie l'objet représentant les données affichées dans le diagramme com.sun.star.table.XTableChart.

## Création d'un diagramme

Considérez les données suivantes dans la plage "A1:B6" d'une feuille nommée "Report".

| A | B
--- | --- | ---
1 | Sample A | Sample B
2 | 36 | 40
3 | 39 | 43
4 | 45 | 40
5 | 52 | 48

Les exemples ci-dessous en Basic et Python montrent comment créer un diagramme linéaire à partir de ces données avec des légendes.

##### En Basic :

        oDoc = CreateScriptService("Calc")
        oChart = oDoc.CreateChart("Samples", "Report", "Report.A1:B6")
        oChart.ChartType = "Line"
        oChart.Legend = True
        oChart.Resize(1000, 1000, 25000, 15000)

##### En Python

        doc = CreateScriptService("Calc")
        chart = doc.CreateChart("Samples", "Report", "Report.A1:B6")
        chart.ChartType = "Line"
        chart.Legend = True
        chart.Resize(1000, 1000, 25000, 15000)

Le diagramme n'a pas besoin d'être créé sur la même feuille que celle où se trouvent les données. Il peut être créé sur n'importe quelle feuille existante dans le fichier actuel en spécifiant le nom de la feuille dans le deuxième argument de la méthode CreateChart.

## Méthodes

Liste des méthodes dans le service Chart
ExportToFile | Resize

## ExportToFile

Enregistre le diagramme en tant que fichier image dans un emplacement spécifié. Renvoie True si le fichier image a pu être créé avec succès.

### Syntaxe :

chart.ExportToFile(filename: str, imagetype: str = "png", overwrite: bool = False): bool

### Paramètres :

filename : identifie le chemin et le nom du fichier où l'image sera enregistrée. Il doit suivre la notation définie dans SF_FileSystem.FileNaming.

imagetype : le nom du type d'image à créer. Les valeurs suivantes sont acceptées : "gif", "jpeg", "png" (par défaut), "svg" et "tiff".

overwrite : spécifie si le fichier de destination peut être écrasé (par défaut = False).

### Exemple :

##### En Basic :

          oChart.ExportToFile("C:\Temp\myChart.svg", ImageType := "svg", Overwrite := True)

##### En Python

          chart.ExportToFile(r"C:\Temp\myChart.svg", imagetype="svg", overwrite=True)

## Resize

Modifie la position du diagramme dans la feuille en cours et modifie sa largeur et sa hauteur. Renvoie True si le redimensionnement a réussi.

### Syntaxe :

chart.Resize([xpos: int], [ypos: int], [width: int], [height: int]): bool

### Paramètres :

xpos, ypos : spécifier les nouvelles positions X et Y du diagramme. Si l'une de ces valeurs est omise ou si des valeurs négatives sont fournies, les positions correspondantes restent inchangées.

width : spécifier la nouvelle largeur du diagramme. Si cet argument est omis ou si une valeur négative est fournie, la largeur du diagramme reste inchangée.

height : spécifier la nouvelle hauteur du diagramme. Si cet argument est omis ou si une valeur négative est fournie, la hauteur du diagramme reste inchangée.

Tous les arguments sont fournis sous forme de valeurs entières qui correspondent à 1/100 de millimètre.

### Exemple :

##### En Basic :

          ' Modifie uniquement les positions X et Y
          oChart.Rezise(1000, 3000)
          ' Modifie uniquement la largeur et la hauteur du diagramme
          oChart.Resize(, , 25000, 12500)
          ' Les arguments de mots clés sont pris en charge
          oChart.Resize(Width := 25000, Height := 12500)

##### En Python

          chart.Rezise(1000, 3000)
          chart.Resize(-1, -1, 20000, 20000)
          chart.Resize(width=25000, height=12500)

Toutes les routines ou identifiants de base ScriptForge qui sont préfixés par un caractère de soulignement "_" sont réservés à un usage interne. Ils ne sont pas destinés à être utilisés dans des macros de base ou des scripts Python.

Rubriques connexes

SFDocuments. Service Calc