FAQ C++ BuilderConsultez toutes les FAQ
Nombre d'auteurs : 60, nombre de questions : 670, dernière mise à jour : 21 novembre 2010 Ajouter une question
Cette F.A.Q. a été réalisée à partir des questions fréquemment posées sur le forum C++ Builder de developpez.com et de l'expérience personnelle des auteurs.
Nous tenons à souligner que cette F.A.Q. ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette F.A.Q. ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez devenir rédacteur, contactez pottiez
Nous espérons que cette F.A.Q. saura répondre à un maximum de vos questions. Nous vous souhaitons une bonne lecture.
L'équipe C++ Builder de Developpez.
Commentez cette FAQ : Commentez
- 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 ?
Voici comment obtenir le nombre de feuilles du classeur Calc:
La fonction GetCount permet d'obtenir le nombre de feuilles contenues dans le classeur.
Code c++ : | Sélectionner tout |
1 2 3 4 5 | Variant vOOoMonClasseur; int vOOoNombreDeFeuilles; vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); vOOoNombreDeFeuilles = vOOoMonClasseur.OleFunction("GetCount"); |
Pour protéger la feuille calc
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 | 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"); |
Voici comment déprotéger une feuille calc
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 | 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"); |
Voici comment tester si une feuille est protégée calc
Code c++ : | Sélectionner tout |
1 2 3 4 | Boolean vOOoprotect; // on teste si la feuille est protégée vOOoprotect = vOOoMaFeuille.OleFunction("Isprotected"); |
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.
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 | 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); |
Voici comment accéder à une feuille Calc par son index dans ce cas on sélectionne la première feuille.
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 | Variant vOOoMonClasseur; Variant vOOoMaFeuille; vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); // ("GetByIndex", 0) représente la 1er feuille vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByIndex", 0); |
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) :
Code c++ : | Sélectionner tout |
1 2 3 4 5 | Variant vOOoMonClasseur; Variant vOOoMaFeuille; vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); |
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.
Code c++ : | Sélectionner tout |
1 2 3 4 | Variant vOOoMonClasseur; vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); vOOoMonClasseur.OleFunction("RemoveByName", "Feuille1"); |
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
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 | 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); |
Voici comment déplacer une feuille Calc:
En utilisant la fonction MoveByName(Feuille : string, NouvelIndex: integer);
Code c++ : | Sélectionner tout |
1 2 3 4 5 | 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 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
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 | 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); |
Voici comment obtenir le nom d'une feuille Calc.
La méthode GetName permet d'obtenir le nom de chaque feuille :
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 | 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"); |
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 :
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 | 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"); |
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
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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; } |
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
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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); |
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.
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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); |
Voici un exemple de fusion et d'annulation de fusion pour la plage de cellules A1:B1
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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é.
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
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 | 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
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 | Variant vOOoMonClasseur; Variant vOOoMaFeuille; Variant vOOoMesLignes; vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); vOOoMesLignes = vOOoMaFeuille.OleFunction("GetRows"); vOOoMesLignes.OleFunction("removeByIndex", 1, 1); |
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
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 | 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
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 | Variant vOOoMonClasseur; Variant vOOoMaFeuille; Variant vOOoMesLignes; vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); vOOoMesLignes = vOOoMaFeuille.OleFunction("GetRows"); vOOoMesLignes.OleFunction("insertByIndex", 1, 1); |
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
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | 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); |
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 :
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | 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 :
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 | Variant vOOoMonClasseur; Variant vOOoMaFeuille; int vOOoresult; vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); vOOoresult = vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0).OleFunction("GetValue"); |
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)
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 | 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); |
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.
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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); |
Pour affecter une valeur à une cellule il suffit d'appeler la méthode SetValue.
Par l'intermédiaire d'une variable Cellule :
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 | 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 :
Code c++ : | Sélectionner tout |
1 2 3 4 5 | Variant vOOoMonClasseur; Variant vOOoMaFeuille; vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0).OleFunction("SetValue", 123); |
Pour affecter une formule à une cellule :
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 | Variant vOOoMonClasseur; Variant vOOoMaFeuille; Variant vOOoCellule; vOOoMonClasseur = vOOoDocument.OleFunction("getSheets"); vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1"); vOOoMaFeuille.OleFunction("getCellByPosition", 0, 0).OleFunction("SetFormula", "=A2+B4"); |
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).
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 | 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;
Pour ajouter un hyperlien dans une cellule :
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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); |
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.
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 : Épaisseur 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.
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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); |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes 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 © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.