2010-08-05 5 views
1

J'essaie de créer un simple programme Java pour ouvrir un document Word existant, changer quelque chose et l'enregistrer sous le nom de fichier .html.Enregistrer le document Word avec JACOB (Java)

La partie qui ne fonctionne pas est de l'enregistrer sous .html. Le problème est, j'ai obtenu le fichier html mais c'est seulement un doc-fichier renommé. Donc pas vraiment un fichier .html avec lequel je peux travailler.

Ce que j'ai trouvé avec Google:

Object oWordBasic = Dispatch.call(oWord, "WordBasic").getDispatch(); 
Dispatch.call((Dispatch) oWordBasic, "FileSaveAs", path); 

Ce que je dois faire, pour obtenir un fichier html en sortie?

Merci d'avance.

+3

Ne jamais dire "ça ne fonctionne pas" en demandant de l'aide. Décrivez en détail les étapes que vous avez essayées, la sortie que vous * attendiez d'elles et la sortie * que vous avez obtenue *. Pour le moment, il n'est pas possible de savoir si votre problème est un fichier HTML vide, une exception d'exécution non interceptée, un fichier avec un mauvais encodage, un fichier où les entités HTML ne sont pas échappées, etc. –

+0

Merci, j'ai ajouté quelques détails maintenant. – Tronje182

Répondre

3

Il utilise l'objet Automation OLE pour enregistrer le fichier, vous devez donc trouver la méthode ou le paramètre pour indiquer le type de fichier.

C'est la macro que je pourrais enregistrer avec Word: paramètre = wdFormatHTML (ou la valeur constante) à la méthode SaveAs:

ActiveDocument.SaveAs filename:="asdd.htm", FileFormat:=wdFormatHTML, _ 
    LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _ 
    :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _ 
    SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _ 
    False 

Donc cela signifie que vous devez indiquer FileFormat. C'est laissé comme un exercice pour le lecteur :)

+0

PS: vous pouvez toujours essayer d'enregistrer une macro dans Word, en regardant le code généré et apprendre comment vous faites quelque chose VBA VBA. Ensuite, vous pouvez traduire ce code VBA en code réel (VBScript ou Dispatch.call dans votre cas). – helios

+0

Merci, j'ai trouvé la réponse. Je l'ai essayé avec la fonction macro de mot avant de poser la question, mais il ne m'a pas plus loin;) – Tronje182

+0

La plupart du temps les valeurs qu'un utilisateur change deviennent des paramètres d'une méthode. Donc, dans ce cas, vous devez choisir le type de fichier pour écrire un code HTML valide. Et c'est devenu un paramètre de la méthode :) J'ai trouvé très intéressant et puissant d'intégrer VBA dans une autre application, en profiter. – helios

3

Je l'ai compris, grâce à Helios pour le pourboire.

Le code est correct:

Object oWordBasic = Dispatch.call(oWord, "WordBasic").getDispatch(); 
Dispatch.call((Dispatch) oWordBasic, "FileSaveAs", path, new Variant(8)); 

Le paramètre de la variante est le format de sortie. (par exemple 8 est html, 6 est rtf, 17 est pdf) Vous pouvez trouver la liste complète à: WdSaveFormat Enumeration

+0

Très bien, puisque la réponse de Helios a été la plus utile pour résoudre votre problème, vous pouvez cliquer sur la coche vide à côté pour l'accepter. –

+1

Vous pouvez déclarer la même constante dans votre programme Java pour conserver la signification de 8 clear. Et doit être un moyen de faire un appel de paramètres nommés, je veux dire, pour faire la chose 'method param1 = valeur1, param5 = valeur5' chose :). Merci pour le chèque! – helios

Questions connexes