Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

Vous n'avez pas encore de compte Developpez.com ? L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Developpez.com

C++

Choisissez la catégorie, puis la rubrique :

logo
Sommaire > OpenOffice > Gestion des feuilles
        Comment obtenir le nombre de feuilles du classeur OleOpenOffice ?
        Comment protéger une feuille OleOpenOffice ?
        Comment déprotéger une feuille OleOpenOffice ?
        Comment tester si une feuille est protegée OleOpenOffice ?
        Comment modifier la visibilité d'une feuille OleOpenOffice ?
        Comment accéder à une feuille par son index OleOpenOffice ?
        Comment accéder à une feuille par son nom OleOpenOffice ?
        Comment supprimer une feuille OleOpenOffice ?
        Comment dupliquer une feuille OleOpenOffice ?
        Comment déplacer une feuille OleOpenOffice ?
        Comment ajouter une nouvelle feuille OleOpenOffice ?
        Comment obtenir le nom d'une feuille du classeur OleOpenOffice ?
        Comment renommer une feuille Ole OpenOffice ?
        Comment connaître le type de la Cellule OleOpenOffice ?
        Comment copier une plage de cellules OleOpenOffice ?
        Comment déplacer une plage de cellules OleOpenOffice ?
        Comment fusionner des cellules OleOpenOffice ?
        Comment supprimer des cellules lignes colonnes d'une feuille OleOpenOffice ?
        Comment insérer des cellules, des lignes, des colonnes dans une feuille OleOpenOffice ?
        Comment définir une plage de cellules OleOpenOffice ?
        Comment récupérer la valeur d'une cellule de OLeOpenOffice ?
        Comment modifier la propriété arrière-plan des cellules OleOpenOffice ?
        Comment modifier les propriétés protection des cellules OleOpenOffice ?
        Comment accéder à une cellule et modifier sa valeur OleOpenOffice ?
        Comment affecter une formule à une cellule OleOpenOffice ?
        Comment remplir une cellule avec du texte OleOpenOffice ?
        Comment ajouter un hyperlien dans une cellule OleOpenOffice ?
        Comment modifier les propriétés police des cellules OleOpenOffice ?



Comment obtenir le nombre de feuilles du classeur OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Voici comment obtenir le nombre de feuilles du classeur Calc:


La fonction GetCount permet d'obtenir le nombre de feuilles contenues dans le classeur.

Variant vOOoMonClasseur;
int vOOoNombreDeFeuilles;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoNombreDeFeuilles = vOOoMonClasseur.OleFunction("GetCount");

Comment protéger une feuille OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Pour protéger la feuille calc

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
 
// on protège la feuille
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
// ("GetByIndex", 0) donne la feuille ici la 1er feuille
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByIndex", 0);
vOOoMaFeuille.OleFunction("protect", "password");

Comment déprotéger une feuille OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Voici comment déprotéger une feuille calc

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
 
// on déprotège la feuille
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
// ("GetByIndex", 0) donne la feuille ici la 1er feuille
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByIndex", 0);
vOOoMaFeuille.OleFunction("Unprotect", "password");

Comment tester si une feuille est protegée OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Voici comment tester si une feuille est protegée calc

Boolean vOOoprotect;
 
// on teste si la feuille est protegée
vOOoprotect = vOOoMaFeuille.OleFunction("Isprotected");

Comment modifier la visibilité d'une feuille OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Voici comment rendre invisible ou visible une feuille calc
Les feuilles de calcul contiennent la propriété IsVisible qui permet d'afficher ou masquer la feuille dans le classeur.

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
// ("GetByIndex", 0) représente la 1er feuille
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByIndex", 0);
// on rend la feuille invisible
vOOoMaFeuille.OlePropertySet("IsVisible", false);
 
// on rend la feuille visible
vOOoMaFeuille.OlePropertySet("IsVisible", true);

Comment accéder à une feuille par son index OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Voici comment accéder à une feuille Calc par son index dans ce cas on sélectionne la première feuille.

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
// ("GetByIndex", 0) représente la 1er feuille
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByIndex", 0);

Comment accéder à une feuille par son nom OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Toutes les QR suivantes sont basées sur une variable "MaFeuille" représentant une feuille du classeur ouvert.
On peut utiliser le nom de la feuille pour accéder à cette variable. Ce nom est celui qui apparaît dans l'onglet de la feuille (fonction GetByName) :

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");

Comment supprimer une feuille OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

On doit utiliser le nom de la feuille pour pouvoir la supprimer. Ce nom est celui qui apparaît dans l'onglet de la feuille.

Variant vOOoMonClasseur;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMonClasseur.OleFunction("RemoveByName", "Feuille1");

Comment dupliquer une feuille OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Voici comment dupliquer une feuille Calc:


En utilisant la fonction CopyByName(Source, Copie, IndexCopie);
Source correspond au nom situé dans l'onglet de la feuille à copier
Copie correspond au nom de la nouvelle feuille qui va figurer dans l'onglet de cette feuille
IndexCopie correspond à la position de la nouvelle feuille créée

Variant vOOoMonClasseur;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
// "Feuille1" la feuille que l'on va déplacer
// 3 va placer la feuille trois emplacements plus loin
vOOoMonClasseur.OleFunction("copyByName", "Feuille1", 2);

Comment déplacer une feuille OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Voici comment déplacer une feuille Calc:


En utilisant la fonction MoveByName(Feuille : string, NouvelIndex: integer);

Variant vOOoMonClasseur;
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
// "Feuille1" la feuille que l'on va déplacer
// 3 va positionner la feuille à l'emplacement 3
vOOoMonClasseur.OleFunction("moveByName", "Feuille1", 3);

Comment ajouter une nouvelle feuille OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Comment ajouter une feuille dans mon classeur ?
La fonction InsertNewByName permet d'ajouter une feuille dans le classeur.
Function insertNewByName(Nom : string, index : integer);
La valeur de Index correspond à la position de la feuille dans le classeur

Variant vOOoMonClasseur;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
// "Nom_de_la_Nouvelle_Feuille", nom de la feuille que l'on va créer
// 0 emplacement de la feuille créée
vOOoMonClasseur.OleFunction("InsertNewByName", "Nom_de_la_Nouvelle_Feuille", 0);

Comment obtenir le nom d'une feuille du classeur OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Voici comment obtenir le nom d'une feuille Calc.


La méthode GetName permet d'obtenir le nom de chaque feuille :

Variant vOOoMonClasseur;
String vOOoNomDeLaFeuille;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
// 0 emplacement de la feuille dont on cherche le nom
vOOoNomDeLaFeuille = vOOoMonClasseur.OleFunction("getByIndex", 0).OleFunction("GetName");

Comment renommer une feuille Ole OpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Voici comment renommer une feuille Calc


Pour modifier le nom qui apparaît dans l'onglet de la feuille il suffit de modifier la propriété Name de la feuille :

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
// ("GetByIndex", 0) 0 represente la 1er feuille
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByIndex", 0);
vOOoMaFeuille.OlePropertySet("Name", "Nouveau_Nom_de_la_Feuille");

Comment connaître le type de la Cellule OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Pour récupérer le type de donnée stockée dans une cellule, il suffit d'appeler la méthode GetType par l'intermédiaire d'une variable Cellule
Cette méthode retourne :

0 pour une Cellule Vide
1 pour une Cellule contenant une valeur de type Nombre
2 pour une Cellule contenant une valeur de type Chaine de caractère
3 pour une Cellule contenant une valeur de type Formule

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
int vOOoresult;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
vOOoresult = vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0).OleFunction("GetType");
    switch (vOOoresult)
    {
case 0 :
ShowMessage("Cellule Vide");
return;
case 1 :
ShowMessage("Cellule contenant un Nombre");
return;
case 2 :
ShowMessage("Cellule contenant une chaine de caractère");
return;
case 3 :
ShowMessage("Cellule contenant une formule");
return;
    }

Comment copier une plage de cellules OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Pour effectuer une copie d'une plage de cellules, nous devons définir la plage de cellule source (objet de classe com.sun.star.table.CellRangeAddress) et l'adresse de la cellule de destination (objet de classe com.sun.star.table.CellAddress).
Ensuite nous allons utiliser la fonction CopyRange(madestination, maselection)
madestination correspond à l'objet dans lequel nous avons défini la cellule de destination
Maselection correspond à l'objet dans lequel nous avons défini la plage de cellules

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
Variant vOOoMaDestination;
Variant vOOoMaPlage;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
 
vOOoMaDestination = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.table.CellAddress");
vOOoMaPlage = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.table.CellRangeAddress");
 
vOOoMaDestination.OlePropertySet("Sheet", 0);
vOOoMaDestination.OlePropertySet("Column", 5);
vOOoMaDestination.OlePropertySet("Row", 5);
vOOoMaPlage.OlePropertySet("Sheet", 0);
vOOoMaPlage.OlePropertySet("StartColumn", 0);
vOOoMaPlage.OlePropertySet("StartRow", 0);
vOOoMaPlage.OlePropertySet("EndColumn", 1);
vOOoMaPlage.OlePropertySet("EndRow", 1);
vOOoMaFeuille.OleFunction("CopyRange", vOOoMaDestination, vOOoMaPlage);

Comment déplacer une plage de cellules OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Pour effectuer un déplacement d'une plage de cellules, nous devons définir la plage de cellule source (objet de classe com.sun.star.table.CellRangeAddress) et l'adresse de la cellule de destination (objet de classe com.sun.star.table.CellAddress).
Ensuite nous allons utiliser la fonction MoveRange(madestination, maselection) .
madestination correspond à l'objet dans lequel nous avons défini la cellule de destination.
Maselection correspond à l'objet dans lequel nous avons défini la plage de cellules.

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
Variant vOOoMaPlage;
Variant vOOoMaDestination;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
vOOoMaDestination = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.table.CellAddress");
vOOoMaPlage = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.table.CellRangeAddress");
vOOoMaDestination.OlePropertySet("Sheet", 0);
vOOoMaDestination.OlePropertySet("Column", 5);
vOOoMaDestination.OlePropertySet("Row", 5);
 
vOOoMaPlage.OlePropertySet("Sheet", 0);
vOOoMaPlage.OlePropertySet("StartColumn", 0);
vOOoMaPlage.OlePropertySet("StartRow", 0);
vOOoMaPlage.OlePropertySet("EndColumn", 5);
vOOoMaPlage.OlePropertySet("EndRow", 5);
vOOoMaFeuille.OleFunction("moveRange", vOOoMaDestination, vOOoMaPlage);

Comment fusionner des cellules OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Voici un exemple de fusion et d'annulation de fusion pour la plage de cellules A1:B1

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
if (vOOoMaFeuille.OleFunction("getCellRangeByName", "A1:B1").OleFunction("Getismerged"))
        {
vOOoMaFeuille.OleFunction("getCellRangeByName", "A1:B1").OleFunction("merge", false); // ou false
        }
else
        {
vOOoMaFeuille.OleFunction("getCellRangeByName", "A1:B1").OleFunction("merge", true); // ou false
        }

La fonction GetIsMerged permet de savoir si la sélection de cellules est fusionnée ou non.
La fonction merge, quand a elle, permet de basculer l'état de la sélection de fusionné à non fusionné.


Comment supprimer des cellules lignes colonnes d'une feuille OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

La suppression de cellules dans une feuille de calcul se passe en 2 temps.
Dans un premier temps, nous devons définir la plage de cellules que nous voulons supprimer à l'aide d'un objet de classe com.sun.star.table.CellRangeAddress
Ensuite nous allons utiliser la fonction RemoveRange(MaPlage, ModeDeSuppression)
MaPlage correspond à l'objet dans lequel nous avons défini la plage de cellules
ModeDeSuppression définit la manière dont se comporte le contenu des cellules sélectionnées. Sa valeur peut être :
1 : Les cellules se trouvant en dessous prennent la place des cellules supprimées.
2 : Les cellules se trouvant à droite prennent la place des cellules supprimées.
3 : Supprime les lignes entières de la sélection
4 : Supprime les colonnes entières de la sélection

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
Variant vOOoMaPlage;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
vOOoMaPlage = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.table.CellRangeAddress");
vOOoMaPlage.OlePropertySet("Sheet", 0);
vOOoMaPlage.OlePropertySet("StartColumn", 0);
vOOoMaPlage.OlePropertySet("StartRow", 0);
vOOoMaPlage.OlePropertySet("EndColumn", 5);
vOOoMaPlage.OlePropertySet("EndRow", 5);
vOOoMaFeuille.OleFunction("removeRange", vOOoMaPlage, 1);

Pour effacer simplement des colonnes il existe une autre technique qui ne nécessite pas la création d'une plage de cellules.
Nous allons utiliser la fonction RemoveByIndex(Indexdecolonne, NombredeColonne)
IndexDeColonne : est l'index de la première colonne effacée.
NombreDeColonne : Nombre de Colonnes que vous voulez effacer

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
Variant vOOoMesColonnes;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
vOOoMesColonnes = vOOoMaFeuille.OleFunction("GetColumns");
vOOoMesColonnes.OleFunction("removeByIndex", 1, 1);

Nous pouvons faire de même pour la suppression de lignes

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
Variant vOOoMesLignes;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
vOOoMesLignes = vOOoMaFeuille.OleFunction("GetRows");
vOOoMesLignes.OleFunction("removeByIndex", 1, 1);

Comment insérer des cellules, des lignes, des colonnes dans une feuille OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

L'insertion de cellules dans une feuille de calcul se passe en 2 temps.
Dans un premier temps, nous devons définir la plage de cellules que nous voulons insérer à l'aide d'un objet de classe com.sun.star.table.CellRangeAddress
Ensuite nous allons utiliser la fonction InsertCells(MaPlage, ModeDInsertion)
MaPlage correspond à l'objet dans lequel nous avons défini la plage de cellules
ModeDInsertion définit la manière dont se comporte le contenu des cellules sélectionnées sa valeur peut être :
1 : Déplace la plage de cellules vers le bas
2 : Déplace la plage de cellules vers la droite
3 : Insère des lignes entières
4 : Insère des colonnes entières

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
Variant vOOoMaPlage;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
vOOoMaPlage = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.table.CellRangeAddress");
vOOoMaPlage.OlePropertySet("Sheet", 0);
vOOoMaPlage.OlePropertySet("StartColumn", 0);
vOOoMaPlage.OlePropertySet("StartRow", 0);
vOOoMaPlage.OlePropertySet("EndColumn", 5);
vOOoMaPlage.OlePropertySet("EndRow", 5);
vOOoMaFeuille.OleFunction("insertCells", vOOoMaPlage, 1);

Pour insérer simplement des colonnes il existe une autre technique qui ne nécessite pas la création d'une plage de cellules.
Nous allons utiliser la fonction InsertByIndex(IndexDeColonne, NombreDeColonne)
IndexDeColonne : est l'index de la première colonne insérée.
NombreDeColonne : Nombre de Colonnes que vous voulez insérer

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
Variant vOOoMesColonnes;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
vOOoMesColonnes = vOOoMaFeuille.OleFunction("GetColumns");
vOOoMesColonnes.OleFunction("insertByIndex", 1, 1);

Nous pouvons faire de même pour l'insertion de lignes

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
Variant vOOoMesLignes;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
vOOoMesLignes = vOOoMaFeuille.OleFunction("GetRows");
vOOoMesLignes.OleFunction("insertByIndex", 1, 1);

Comment définir une plage de cellules OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Une plage de cellules est contenue dans un objet de classe com.sun.star.table.CellRangeAddress
Propriétés de l'objet com.sun.star.table.CellRangeAddress :
Sheet : Index de la feuille de calcul dans laquelle nous définissons la plage (0 pour la feuille 1)
StartColumn : Index de la colonne de départ de la sélection
EndColumn : Index de la colonne de fin de la sélection
StartRow : Index de la Ligne de départ de la sélection
EndRow : Index de la Ligne de départ de la sélection
Pour créer un objet de cette classe, nous devons utiliser l'API de reflections

Variant vOOoCoreReflection;
Variant vOOoMaPlage;
 
vOOoMaPlage = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.table.CellRangeAddress");
vOOoMaPlage.OlePropertySet("Sheet", 0);
vOOoMaPlage.OlePropertySet("StartColumn", 0);
vOOoMaPlage.OlePropertySet("StartRow", 0);
vOOoMaPlage.OlePropertySet("EndColumn", 5);
vOOoMaPlage.OlePropertySet("EndRow", 5);

Comment récupérer la valeur d'une cellule de OLeOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, MFDev

Pour récupérer la valeur d'une cellule, il suffit d'appeler la méthode GetValue.
Par l'intermédiaire d'une variable Cellule :

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
Variant vOOoCellule;
int vOOoresult;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
vOOoCellule = vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0);
vOOoresult = vOOoCellule.OleFunction("GetValue");

Ou directement en utilisant la feuille :

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
int vOOoresult;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
vOOoresult = vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0).OleFunction("GetValue");

Comment modifier la propriété arrière-plan des cellules OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

La couleur d'arrière plan est stockée dans la propriété CellBackColor au format RVB (Rouge Vert Bleu) Si la cellule ne doit pas contenir de couleur de remplissage, la propriété IsCellBackgroundTransparent, doit être basculée à True.
Exemple pour définir la couleur suivante :


La couleur choisie est constituée de la manière suivante :
Rouge : 187 en décimales, soit la valeur BB en Hexadécimal
Vert : 187 en décimales, soit la valeur BB en Hexadécimal
Bleu : 255 en décimales, soit la valeur FF en Hexadécimal
Pour définir cette couleur comme arrière plan de la cellule, il faudra passer la valeur $BBBBFF ($RougeVertBleu en hexadécimal)

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
Variant vOOoCellule;
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
vOOoCellule = vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0);
vOOoCellule.OleFunction("setPropertyValue", "IsCellBackgroundTransparent", false);
vOOoCellule.OleFunction("setPropertyValue", "CellBackColor", 0xBBBBFF);

Comment modifier les propriétés protection des cellules OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Les informations de protection sont stockées dans un objet de type com.sun.star.util.CellProtection
1 Propriété IsHidden de type boolean
Masque les formules et le contenu des cellules sélectionnées.
2 Propriété IsLocked de type boolean
Empêche toute modification des cellules sélectionnées.
3 Propriété IsFormulaHidden de type boolean
Masque les formules dans les cellules sélectionnées.
4 Propriété IsPrintHidden de type Boolean
Empêche l'impression des cellules sélectionnées.

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
Variant vOOoCellule;
Variant vOOoprotection;
 
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
vOOoCellule = vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0);
vOOoprotection = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.util.CellProtection");
vOOoprotection.OlePropertySet("IsHidden", false);
vOOoprotection.OlePropertySet("IsPrintHidden", true);
vOOoprotection.OlePropertySet("IsLocked", true);
vOOoprotection.OlePropertySet("IsFormulaHidden", true);
vOOoCellule.OleFunction("setPropertyValue", "CellProtection", vOOoprotection);

Comment accéder à une cellule et modifier sa valeur OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Pour affecter une valeur à une cellule il suffit d'appeler la méthode SetValue.
Par l'intermédiaire d'une variable Cellule :

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
Variant vOOoCellule;
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
vOOoCellule = vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0);
vOOoCellule.OleFunction("SetValue", 123);

Ou directement en utilisant la feuille :

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0).OleFunction("SetValue", 123);

Comment affecter une formule à une cellule OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Pour affecter une formule à une cellule :

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
Variant vOOoCellule;
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0).OleFunction("SetFormula", "=A2+B4");

Comment remplir une cellule avec du texte OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Selon le type de texte que l'on souhaite intégrer, il faudra utiliser la fonction insertString (texte standard) ou insertControlCharacter (caractères spéciaux).

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
Variant vOOoCellule;
Variant vOOoTextCursor;
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
vOOoCellule = vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0);
vOOoTextCursor = vOOoCellule.OleFunction("createTextCursor");
vOOoCellule.OleProcedure("insertString", vOOoTextCursor, "1er Ligne", false);
vOOoCellule.OleProcedure("insertControlCharacter", vOOoTextCursor, 0, false);
vOOoCellule.OleProcedure("insertString", vOOoTextCursor, "2em Ligne", false);

Liste des codes utilisables avec la fonction insertControlCharacter :
PARAGRAPH_BREAK = 0;
LINE_BREAK = 1;
HARD_HYPHEN = 2;
SOFT_HYPHEN = 3;
HARD_SPACE = 4;
APPEND_PARAGRAPH = 5;


Comment ajouter un hyperlien dans une cellule OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Pour ajouter un hyperlien dans une cellule :

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
Variant vOOoCellule;
Variant vOOoTextCursor;
Variant vOOoHyperlinkObj;
vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
vOOoCellule = vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0);
vOOoTextCursor = vOOoCellule.OleFunction("createTextCursor");
vOOoHyperlinkObj = vOOoDocument.OleFunction("createInstance", "com.sun.star.text.TextField.URL");
vOOoHyperlinkObj.OleFunction("setPropertyValue", "URL", http://www.developpez.com/");
vOOoHyperlinkObj.OleFunction("setPropertyValue", "Representation", "Visiter Developpez.com");
vOOoCellule.OleFunction("insertTextContent", vOOoTextCursor, vOOoHyperlinkObj, false);

Comment modifier les propriétés police des cellules OleOpenOffice ?
Créé le 10/12/2007[haut]
auteurs : blondelle, pottiez, Atlantis

Pour modifier les propriétés des cellules, il faut utiliser la procédure setPropertyValue(paramètre, valeur)
Attention les paramètres et les valeurs doivent respecter la casse.


1 Propriété : CharFontName de type string
Cette propriété spécifie le nom de la police de caractère.
2 Propriété : CharWeight de type Extended
La gestion du gras s'effectue en modifiant l'épaisseur de la police de caractère. Cette valeur est comprise entre 0 et 200
Liste de valeurs disponibles :
0 : Epaisseur non déterminée
50 : Fin
100 : Normal
150 : Gras
175 : Ultra Gras
200: Noir
2 Propriété : CharPosture de type com.sun.star.awt.FontSlant
Cette propriété spécifie l'inclinaison des caractères dans le texte.
Liste des valeurs disponibles :
- NONE :
- OBLIQUE :
- ITALIC
- DONTKNOW
- REVERSE_OBLIQUE
- REVERSE_ITALIC
CoreReflection.forName('com.sun.star.awt.FontSlant').getField('ITALIC').get();
3 Propriété : CharHeight de type Extended
Définit la taille de la police.
4 Propriété : CharLocale de type CharLocale
Définit la langue utilisée par le correcteur orthographique pour corriger la partie sélectionnée du texte saisi.

Variant vOOoMonClasseur;
Variant vOOoMaFeuille;
Variant vOOoLocale;
Variant vOOoCellule;
Variant vOOoCoreReflection;
Variant vOOoOpenOffice;

vOOoCoreReflection = vOOoOpenOffice.OleFunction("createInstance","com.sun.star.reflection.CoreReflection");


vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
vOOoCellule = vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0);
vOOoCellule.OleFunction("setPropertyValue", "CharFontName", "Arial");
vOOoCellule.OleFunction("setPropertyValue", "CharHeight", 10);
vOOoCellule.OleFunction("setPropertyValue", "CharWeight", 150);
vOOoCellule.OleFunction("setPropertyValue", "CharPosture", vOOoCoreReflection.OleFunction("forName", "com.sun.star.awt.FontSlant").OleFunction("getField", "ITALIC").OleFunction("get", ""));
vOOoLocale = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.lang.Locale");

vOOoLocale.OlePropertySet("Country", "FR");
vOOoLocale.OlePropertySet("Language", "fr");
vOOoLocale.OlePropertySet("Variant", "fr");

vOOoCellule.OleFunction("setPropertyValue","CharLocale", vOOoLocale);


Consultez les autres F.A.Q.


Valid XHTML 1.0 TransitionalValid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Contacter le responsable de la rubrique C++

Partenaire : Hébergement Web