Accueil > Forum > > > > UNO et OpenOffice
UNO et OpenOffice
mardi 22 mai 2007 à 16:12:05 |
UNO et OpenOffice

tenthor
|
Bonjour, Je développe en java avec UNO pour manipuler les fichers openOffice. Voici mon problème : j'ai un document OpenOffice.org. J'aimerais pourvoir localiser une phrase dans ce texte, et récupérer le XTextRange de cette phrase. Vous savez si c'est possible ? Et si oui comment faire ? Je cherche depuis ce matin et je ne trouve pas de solution. Merci de votre attention, Tenthor.
|
|
jeudi 28 juin 2007 à 09:07:03 |
Re : UNO et OpenOffice

Newobsorder
|
Est-ce que quelqu'un t'as répondu? as-tu trouvé une solution? car Je suis confronté au même problème actuellement. merci!
|
|
jeudi 28 juin 2007 à 09:20:13 |
Re : UNO et OpenOffice

tenthor
|
Bonjour, Non personne ne m'a repondu ! Mais j'ai trouver des solution sur le forum d'openOffice : [ Lien ] section Macro and API. Voici un code permettant de remplacer du texte dans un document : /** * Cette méthode permet de remplacer un texte par un autre dans le document. * * @param document le document où il faut remplacer le texte. * @param oldValue l'ancienne valeur qui se trouve dans le document. * @param newValue la nouvelle valeur à placer dans le document. * * @author pierre.magnaud@crosstalk.fr */ private void remplacerTexte(XTextDocument document, String oldValue, String newValue) { XReplaceable xReplaceable = (XReplaceable) UnoRuntime.queryInterface(XReplaceable.class, document); XReplaceDescriptor xReplaceDescr = (XReplaceDescriptor) xReplaceable.createReplaceDescriptor(); /* Définie la valeur qui sera recherchée. */ xReplaceDescr.setSearchString(oldValue); /* Indique la valeur de remplacement. */ xReplaceDescr.setReplaceString(newValue); /* Remplace toutes les occurences de oldValue par newValue. */ xReplaceable.replaceAll( xReplaceDescr ); }
Bon courrage !
Au fait sur le forum, un personne appelé DannyB à fait entre autre deux classes très utils pour utiliser OOo : [ Lien ]
|
|
jeudi 28 juin 2007 à 14:49:07 |
Re : UNO et OpenOffice

Newobsorder
|
Effectivement ca marche merci beaucoup! Mais je tombe sur plus compliqué cette fois... : Saurais-tu comment localiser un tableau cette fois au lieu d'un simple texte et le remplacer par un tableau créé soi-même?
|
|
vendredi 29 juin 2007 à 09:24:35 |
Re : UNO et OpenOffice

tenthor
|
Salut !
Je suis pas sûr de bien comprendre ta question. Tu veux localiser un tableau ??
Moi ce que je peux te conseiller, c'est de parcourrir les tableaux de ton document, regarder ce qu'il y a dedans, si ca te semble être ce tableau, tu vide le contenu de chaque case et tu met ce que tu veux dedans a la place (tu rajoute des lignes et des colonne au besoin).
Pour parcourrir un tableau, tu commence par récupérer un index sur les tableau du document :
/** * Permet de récupérer un index, sur les tables du document. * * @param document le document. * @return l'index sur les tables, ou <code>null</> en cas d'échec. * * @author pierre.magnaud@crosstalk.fr */ private XIndexAccess getIndexTables(XTextDocument document) { XIndexAccess xIndexedTables = null; /* Index sur des tables contenu dans le document. Il y a trois étapes. */ /* 1. Récupérer l'interface XTextTablesSupplier du document. */ XTextTablesSupplier xTablesSupplier = (XTextTablesSupplier) UnoRuntime.queryInterface(XTextTablesSupplier.class, document ); /* 2. Récupérer la collection de tables. */ XNameAccess xNamedTables = xTablesSupplier.getTextTables(); /* 3. Demande l'interface XIndexAccess de la collection des tables. */ xIndexedTables = (XIndexAccess) UnoRuntime.queryInterface( XIndexAccess.class, xNamedTables); return xIndexedTables; }
Ensuite tu parcours les table une par une et tu fais ton traitement (ici je change les couleur d'une ligne sur deux) :
/** * Permet de changer la couleur des lignes des tableau. * Les lignes paires sont d'une couleurs, les lignes impaires d'une autre. * L'en-tête de colonne, à sa propre couleur. * * <strong><i>Attention, pour que le changement de couleur s'effectue, les lignes du * tableau dans le modèle de document ne doivent pas être colorées (aucun remplissage).</i></strong> * * @param document le document. * * @author pierre.magnaud@crosstalk.fr */ private void changerCouleurLigne(XTextDocument document) { /* On récupère un index sur les tables du document. */ XIndexAccess xIndexedTables = getIndexTables(document); if (xIndexedTables != null) { /* On parcours les tables. */ try { /* Pour chaque tables. */ for (int i = 0 ; i < xIndexedTables.getCount() ; i++) { /* On récupère le service TextTable. */ Object table; table = xIndexedTables.getByIndex(i); /* On demande l'interface XTextTable correspondant au service TextTable. */ XTextTable xTextTable = (XTextTable) UnoRuntime.queryInterface(XTextTable.class, table); /* On récupère un index sur les lignes. */ XIndexAccess xRowsIndex = xTextTable.getRows(); /* Pour la ligne d'en-tête. */ /* On récupère les propriétés de la ligne. */ XPropertySet xFirstRowProperties = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xRowsIndex.getByIndex(0)); /* On affiche le fond (background). */ xFirstRowProperties.setPropertyValue("BackTransparent", new Boolean(false)); /* On change la couleur de fond de la ligne. */ xFirstRowProperties.setPropertyValue("BackColor", new Integer(0xFF6666)); /* Pour chaque ligne paire. */ for (int j = 2 ; j < xRowsIndex.getCount() ; j=j+2) { /* On récupère les propriétés de la ligne. */ XPropertySet xRowProperties = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xRowsIndex.getByIndex(j)); /* On affiche le fond (background). */ xRowProperties.setPropertyValue("BackTransparent", new Boolean(false)); /* On change la couleur de fond de la ligne. */ xRowProperties.setPropertyValue("BackColor", new Integer(0xCCFFCC)); } /* Pour chaque ligne impaire. */ for (int j = 1 ; j < xRowsIndex.getCount() ; j=j+2) { /* On récupère les propriétés de la ligne. */ XPropertySet xRowProperties = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xRowsIndex.getByIndex(j)); /* On affiche le fond (background). */ xRowProperties.setPropertyValue("BackTransparent", new Boolean(false)); /* On change la couleur de fond de la ligne. */ xRowProperties.setPropertyValue("BackColor", new Integer(0xCCCCFF)); } } } catch (IndexOutOfBoundsException e) { e.printStackTrace(); } catch (WrappedTargetException e) { e.printStackTrace(); }catch (UnknownPropertyException e) { e.printStackTrace(); } catch (PropertyVetoException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } } }
Si tu veut récupérer le texte d'une case tu fais :
/* On parcours les cellules de la table, à partir du nom de celle-ci. */ /* Pour chaque cellules. */ for (int j = 0 ; j < cellsNames.length ; j++) { /* Récupérer le conteneur de texte de la cellule à partir du nom de celle-ci. */ XText xCellText = (XText) UnoRuntime.queryInterface(XText.class, xTextTable.getCellByName(cellsNames[j])); /* On récupère le contenu du conteneur (le texte proprement dit cette fois-ci !), sous forme d'une String. */ String text = xCellText.getString(); /* Si le texte correspond au champs que l'on veut remplacer (le code). */ if (text.compareTo(oldValue) == 0) { /* On indique que le code est dans la table. */ dansTableau = true; /* On récupère un index sur les lignes. */ XIndexAccess xIndexRows = xTextTable.getRows(); int nbLig = xIndexRows.getCount()-1; int nbRes = resultats.size(); int nbAjout = nbRes-nbLig; /* On rajoute le nombre de lignes nécessaire. */ if (nbLig < nbRes) xTextTable.getRows().insertByIndex(xIndexRows.getCount(), nbAjout); /* On créé un curseur sur cette cellule qui contient le code. */ XTextTableCursor xTableCursor = xTextTable.createCursorByCellName(cellsNames[j]); ... etc ...
Voilà ! Bonne journée.
|
|
vendredi 29 juin 2007 à 09:25:54 |
Re : UNO et OpenOffice

tenthor
|
Au fait pour mettre du texte dans une case : xCellText.setString(" coucou ");
|
|
Cette discussion est classée dans : openoffice, phrase, uno
Répondre à ce message
Sujets en rapport avec ce message
requête MySQL [ par asx9 ]
asx9je relève la phrase d'un utilisateur dans un servlet et je l'enregistre dans ma base MySQL.le problème c que si il y a un ' (ex:"d'où êtes vous?")
besoin d'aide sur SAX et XML ?? commet parser ??? [ par youneslami ]
bonjour a tous :)en faite, je cherche a parser un fichier XML !!!je doit faire un logiciel en java qui permet de resumer le texte contenu dans un fich
question sur les String [ par youneslami ]
1) Les string :en faite, g un paragraphe, et je veux separer les phrases qui sont dedans ,j'ai une classe Phrase, qui a comme constructeur Phrase(Stri
Problème d'instanciation d'un tableau en java [ par umy ]
Je suis débutant et jai écris quelques lignes de codes et je ne sais pas corrigé mon erreur qui est la suivante:Exception in thread "main" java.lang.N
manipulation de docs openoffice 2.1 [ par tmerant ]
Bonjour a tous, j'espère que vous pourrez m'apporter de l'aide : Je travaille sur une appli java client-serveur qui permet d'imprimer des docs avec de
JooTemplates et openOffice [ par tenthor ]
Bonjour, J'ai une application en Java, et j'aimerais creer des documents openOffice (ou/et Word) dynamiquement, en partant de modèle de document depui
JTable et CellRenderer [ par le_totophe ]
Bonjour à tous,J'utilise pour une de mes tables un Renderer spécifique (la table est une JTable avec le TableSorter de chez Sun) qui logiquement doit
Modifier Document OpenOffice [ par Maiku ]
BonjourJ'ai crée un document OpenOffice (.odt).Je desire modifier certains champs via le langage java.D'après ce que j'ai pu lire sur le net, un .odt
Rechercher un mot dans un fichier txt [ par daviddubois ]
Bonjour tout le monde,J'essaie de voir si une partie de phrase se trouve dans un fichier txt, si tel est le cas, j'incrémente i de 1.ça fonctionne trè
Rechercher le nombre d'occurence dans une phrase avec indexOf() [ par daviddubois ]
Bonjour tout le monde,Est-il possible de rechercher le nombre d'occurence d'un mot dans une phrase avec indexOf ?J'ai par exemple la variable phrase d
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|