[Java] Equivalent de XTextDocument pour Excel

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
kevFrance
NOOuvel adepte
NOOuvel adepte
Messages : 14
Inscription : 21 déc. 2005 10:10
Localisation : Le Puy-en-Velay(43)

[Java] Equivalent de XTextDocument pour Excel

Message par kevFrance »

Bonjour à tous

BONNE ANNEE, BONNE SANTE, BONNE PROGRAMMATION.....

J'ai réalisé un programme JAVA qui permet de transformer un fichier doc sous openoffice puis de l'exporter en format pdf.

Maintenant je souhaite ouvrir avec openoffice un document xls et l'exporter directement en format pdf.

Or je rencontre un problème :
j'utilise ce code pour un fichier word

Code : Tout sélectionner


	XStorable xStorable = (XStorable) UnoRuntime.queryInterface(
				XStorable.class, doc);

	PropertyValue[] propertyvalue = null;
			
	if(isWord == 1)
	{
		propertyvalue = new PropertyValue[1];
				
		propertyvalue[0] = new PropertyValue();
		propertyvalue[0].Name = "FilterName";
		propertyvalue[0].Value = "writer_pdf_Export";
				
		xStorable.storeToURL(tempFileHome, propertyvalue);
	}

Ca marche sans problème car mon doc est un XTextDocument non null.

Je fais maintenant ce code pour un fichier excel :

Code : Tout sélectionner


        XStorable xStorable = (XStorable) UnoRuntime.queryInterface(
				XStorable.class, doc);

	PropertyValue[] propertyvalue = null;

	if(isWord == 2)
	{
		propertyvalue = new PropertyValue[1];
		
		propertyvalue[0] = new PropertyValue();
		propertyvalue[0].Name = "FilterName";
		propertyvalue[0].Value = "calc_pdf_Export";

                xStorable.storeToURL(tempFileHome, propertyvalue);
	}

Ca ne marche car mon doc est null est je pense que ça vient d'un mauvais type : le XTextDocument.

Je voulais donc savoir si quelqu'un connait le type de document pour avoir en mémoire le document en cours excel comme le fait le XTextDocument pour les fichiers word.

Merci
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12457
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Message par Bidouille »

Je pense que vous devriez plutôt tenter votre chance sur un forum dédié Java comme celui de http://www.developpez.com
Si la modération vous adresse un message, il est inutile d'y répondre.
Cela nous fait perdre encore plus de temps de vous lire.
Merci de respecter les règles de ce forum à l'avenir.

La communauté OpenOffice est fragile, participez au projet.
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Message par bm92 »

Ca ne marche car mon doc est null est je pense que ça vient d'un mauvais type : le XTextDocument.
Donc cela veut dire que tu n'as pas correctement chargé le document Excel, ou pas initialisé correctement la variable doc. Mais tu ne montres pas le code correspondant.
Je voulais donc savoir si quelqu'un connait le type de document pour avoir en mémoire le document en cours excel comme le fait le XTextDocument pour les fichiers word.
La programmation OpenOffice.org n'a rien à voir avec celle de MS-Office. De nombreux exemples Java sont disponibles dans le Developer's Guide, qui est une partie du SDK. Une lecture indispensable quand on veux programmer sur OpenOffice.org avec Java. Car c'est pas facile.
kevFrance
NOOuvel adepte
NOOuvel adepte
Messages : 14
Inscription : 21 déc. 2005 10:10
Localisation : Le Puy-en-Velay(43)

Message par kevFrance »

Voici le code qui permet d'initialiser mon XTextDocument oDocText

Code : Tout sélectionner

	private XTextDocument openWriter() throws Exception {

		XTextDocument oDocText = null;
		try {
			
			String url = convertToUrlFile(getDoc()
					.getLocalURL());
			
			PropertyValue[] prop = new PropertyValue[0];
		
			aDoc = mxComponentLoader.loadComponentFromURL(url, "_blank", 0, prop);
			 
			oDocText = (XTextDocument) UnoRuntime.queryInterface(
				XTextDocument.class, aDoc);
		} 
		catch (Exception e) 
		{
			loggerSys.error("openWriter() " + e.getMessage());
			System.out.println(e);
			throw e;
		}

		return oDocText;

	}
Je vais essayer de tenter ma chance ailleurs comme tu le suggere.
Mais si quelqu'un a une idée ou plusieurs, il est le bien venu....

Merci
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Message par bm92 »

Si aDoc est null alors très probablement url est incorrecte.

AMHA il est parfaitement inutile de passer par XTextDocument pour obtenir l'interface XStorable; il suffit de la demander directement au document.
kevFrance
NOOuvel adepte
NOOuvel adepte
Messages : 14
Inscription : 21 déc. 2005 10:10
Localisation : Le Puy-en-Velay(43)

Message par kevFrance »

Tu entends quoi par

il suffit de la demander directement au document.
car avec mon XTextDocument que je donne en entrée à mes fonctions, je peux ensuite modifier mon document en mettant une entête, le numero de page des cadres, de modifier les marges puis de l'exporter au format pdf.
kevFrance
NOOuvel adepte
NOOuvel adepte
Messages : 14
Inscription : 21 déc. 2005 10:10
Localisation : Le Puy-en-Velay(43)

Message par kevFrance »

J'ai une nouvelle question :

Est-ce-que l'on peut forcer openoffice à ouvrir un fichier excel avec swriter au lieu de scalc puisque avec Moffice on peut ouvrir un doc excel avec word...

Merci d'avance
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Message par bm92 »

kevFrance a écrit :Tu entends quoi par

il suffit de la demander directement au document.
Extrait de ConverterServlet.java trouvé dans les exemples du SDK

Code : Tout sélectionner

            XComponentLoader xcomponentloader = ( XComponentLoader )
                UnoRuntime.queryInterface( XComponentLoader.class,
                                           xmulticomponentfactory.createInstanceWithContext(
                                               "com.sun.star.frame.Desktop", xcomponentcontext ) );
            
            // Preparing properties for loading the document
            PropertyValue propertyvalue[] = new PropertyValue[ 1 ];
            // Setting the flag for hidding the open document
            propertyvalue[ 0 ] = new PropertyValue();
            propertyvalue[ 0 ].Name = "Hidden";
            propertyvalue[ 0 ].Value = new Boolean(true);
            
            // Loading the wanted document
            Object objectDocumentToStore =
                xcomponentloader.loadComponentFromURL(
                    stringUrl, "_blank", 0, propertyvalue );
            
            // Getting an object that will offer a simple way to store a document to a URL.
            XStorable xstorable =
                ( XStorable ) UnoRuntime.queryInterface( XStorable.class,
                                                         objectDocumentToStore );
      
            // Preparing properties for converting the document
            propertyvalue = new PropertyValue[ 2 ];
            // Setting the flag for overwriting
            propertyvalue[ 0 ] = new PropertyValue();
            propertyvalue[ 0 ].Name = "Overwrite";
            propertyvalue[ 0 ].Value = new Boolean(true);
            // Setting the filter name
            propertyvalue[ 1 ] = new PropertyValue();
            propertyvalue[ 1 ].Name = "FilterName";
            propertyvalue[ 1 ].Value = stringConvertType;
            
            // Appending the favoured extension to the origin document name
            int index = stringUrl.lastIndexOf('.');
            if ( index >= 0 ) {
                stringConvertedFile = stringUrl.substring(0, index) + "." + stringExtension;
            } else {    
                stringConvertedFile = stringUrl + "." + stringExtension;
            }
            
            // Storing and converting the document
            xstorable.storeAsURL( stringConvertedFile, propertyvalue );
avec mon XTextDocument que je donne en entrée à mes fonctions, je peux ensuite modifier mon document en mettant une entête, le numero de page des cadres, de modifier les marges puis de l'exporter au format pdf
Un document Calc ne se traite pas comme un document Writer, bien qu'il y ait des éléments similaires. C'est pourquoi dans le Developer's Guide il y a un chapitre pour chaque type de document.