Abrir Word: Llamar a librerias dll desde Java
JAWIN
En Java, al ser un Lenguaje Multiplataforma, no es posible hacer uso del API de Windows directamente como pasa con Visual Basic y demás lenguajes Microsoft, sin embargo, muchas veces ya sea por necesidad o por necesad tenemos que hacer uso de alguna libreria dll desde una aplicación Java.
La solución que pasa por nuestra mente es JNI (Java Native Interface), con esto, tenemos todo el poder para crear y hacer uso de cualquier libreria como lo puede hacer Visual Basic, pero…. quienes ya manejaron JNI sabrán que esto no es algo tan trivial como programar un “hola mundo”. Existen diferentes herramientas que facilitan esta tarea al programador, a modo de no enfrentarse al “terrible” JNI para crear las librerias, una de estas herramientas que permite la interoperabilidad entre los objetos COM y Librerias dll de Windows es Jawin.
EJEMPLO
Primeramente, descargar jawin desde http://sourceforge.net/projects/jawinproject/
Una vez descomprimido, debemos copiar jawin.dll que se encuentra en la carpeta bin a WINDOWS/System32.
Posteriormente agregamos en NetBeans la libreria jawin.jar ubicada en la carpeta de lib (ver figura adyacente).
Con esto ya estamos listos para poder escribir el código. En la carpeta demos podrán encontrar algunos ejemplos, entre ellos el llamar y abrir Microsoft Word usando el OLE32. A esto, solo le añadiremos algunas cosas extras.
Primero que abra word pasandole nosotros el texto que queremos visualizar. Luego, crear un documento de word con texto y guardarlo y por último abrir un documento existente y ejecutar una macro.
Declaramos dos constantes y le asignamos los valores correspondientes:
static final String DOC_TEXT = “HOLA MUNDO BYTE\r\n EJEMPLO CON JAWIN”;
static final String DOC_FILENAME = “ejemplo.doc”;
Ahora en la clase que hayamos creado, dentro del método main o algún otro método si lo prefieren, colocamos el siguiente código mostrado en la imágen:
Como puede deducirse fácilmente, si solo deseamos crear el documento pero NO guardarlo, basta con comentar la línea 43. La línea 44 es solo para cerrar Word inmediatamente después de guardar el documento.
Por último para mandar a llamar una macro, podemos sustituir el código anterior del bloque try por el siguiente:
Ole32.CoInitialize();
DispatchPtr app = new DispatchPtr(”Word.Application“);
app.put(”Visible”, true);
DispatchPtr docs = (DispatchPtr) app.get(”Documents”);
DispatchPtr doc = (DispatchPtr) docs.invoke(”Open”,”E:/transponder.doc“);
app.invoke(”Run”,”EdiciónIrA“);
Ole32.CoUninitialize();
donde “EdiciónIrA” es el nombre de la macro, en este caso es el nombre de un comando de word.
Al momento de ejecutar este programa, abrira el documento indicado y mostrará la ventana de Ir a…
Esto solo es un ejemplo de lo que se puede conseguir con jawin para interoperar con objetos COM y librerias dll propias de Windows, se puede interactuar con Excel, Power Point, etc y tambien se puede hacer uso de otras dll como la user32.dll
Cabe señalar que existen otras herramientas similares a jawin, por ejemplo JNative, JACOB, etc y otras especificas para trabajar con Office como por ejemplo POI de la fundación Apache, JExcelApi para trabajar sobre Excel, siendo todos open source.
Saludos!!
Archivado bajo: General, Java, Programación | Etiquetado: api windows java, jawin, Llamar dll desde Java, word desde java

Hola, estoy muy interesado en utilizar esta tecnica para interactuar con un documento word, pero no se que libreria hay que importar.
Aqui tiene mi direccion por si quisiera responderme
Muchas gracias y muy interesante el tema, saludos
Si lee detenidamente el tutorial, encontrará que ahi se explican los pasos a realizar, incluyendo la libreria a importar.
saludos!!!
Puede aplicarse esto a Oracle JDeveloper 10g.?
Gracias.
HOla:
Claro que si, es solo un IDE. Solamente debe saber como agregar una libreria y agregar las que se indican en el tutorial y listo!
saludos!!
Hola, existe un tutorial acerca de Jawin. Y si no, puede darme un ejemplo de modificación de marcadores de Word con Java.
Gracias.
Lo que comenta esta fuera del alcance del tutorial. Desafortunadamente no conozco una página donde brinden un ejemplo similar al que pide.
SIn embargo, tiene dos opciones:
1.- Entrar a la página oficial de jawin y comprar la documentación
2.- Pagarme por una asesoria
inclusive una 3 opción es esperar algunos meses a que tenga tiempo disponible para que me decida a hacer un tutorial sobre el tema que pide.
Reciba un cordial saludo!!
hola con esta ide es posible accesar a informacion del sistema operativo es decir poder sacar un reporte de la memoria ,el disco duro ,programaas instalados en un computador? es posible eso con java?
No es posible con el api estandar de Java.
No es por que sea un lenguaje pobre o malo, al contrario, es quizà de los más robustos en la actualidad. El problema para lo que menciona, radica en que Java es Multiplataforma, utilizando una Maquina Virtual que será la que interactuara entre el S.O y el código Java.
Lo que usted requiere son cosas que dependen 100% del S.O y Java no esta atado a un OS en especifico, por ello no es posible acceder al api de windows, linux de forma directa.
Pero tiene a su alcanse JNI (Java Native Interface) Una poderosa herramienta para poder crear sus librerias en lenguaje nativo del SO (C/C++) que puedan realizar esas tareas que usted requiere y posteriormente llamarlas desde Java, aunque esta no es una tarea relativamente fácil, requiere cierto conocimiento.
Es posible que existan soluciones open source para realizar lo que usted requiera desde Java, lo desconozco.
Pero para que no se lie mucho con estos temas, utilice .NET (C#) o algun otro lenguaje que tenga acceso al api de windows.
saludos!!