jawin操作word
转载于:http://gingguoqiu.iteye.com/blog/1218119
awin-2.0-alpha1.zip解压得到jawin.dll,jawin.jar
jawin.dll放在C:\WINDOWS\system32下
jawin.jar放在项目的lib下
可以使用包中的jawinBrowser.jar,解析MSWORD.OLB(word版本不同,名称稍有不同),获得方法xml文件。
测试代码
package tdh.jawin;import org.jawin.COMException;
import org.jawin.DispatchPtr;
import org.jawin.win32.Ole32;public class WordComm {public void newWord() {try {// 初始化Ole32.CoInitialize();// 创建word对象DispatchPtr app = new DispatchPtr("Word.Application");// 使word 可见app.put("Visible", true);// 获得document对象集合DispatchPtr docs = (DispatchPtr) app.get("Documents");// 新增一个文档DispatchPtr doc = (DispatchPtr) docs.invoke("Add");// 激活当前文档app.invoke("Activate");// 取得Font对象,设置字体,设置字号DispatchPtr objTextFont = (DispatchPtr) ((DispatchPtr) doc.get("Content")).get("Font");objTextFont.put("Name", "黑体");objTextFont.put("Size", "12");// 取得Selection对象DispatchPtr docSelection = (DispatchPtr) app.get("Selection");// 取得段落对象DispatchPtr paragraphFormat = (DispatchPtr) docSelection.get("ParagraphFormat");paragraphFormat.put("Alignment", "0");docSelection.invoke("TypeText", "第一行文字...");insertRowBreak(docSelection);docSelection.invoke("TypeText", "TDHTEXT...");// 新段落,设置段落的对齐方式为居中docSelection.invoke("TypeParagraph");paragraphFormat = (DispatchPtr) docSelection.get("ParagraphFormat");paragraphFormat.put("Alignment", "1");docSelection.invoke("TypeText", "第二行图片...");insertRowBreak(docSelection);docSelection.invoke("TypeText", "TDHIMG");// 新段落,添加表格docSelection.invoke("TypeParagraph");DispatchPtr range = (DispatchPtr) docSelection.get("Range");DispatchPtr tables = (DispatchPtr) doc.get("Tables");tables.invokeN("Add", new Object[] { range, new Integer(3), new Integer(3) });// 三行,三列// 获取刚添加的表格,设置表格为网格型(word2000没用,word2003有用)// DispatchPtr currentTable = (DispatchPtr) tables.invokeN("Item", new// Object[] { new Integer(1) });// currentTable.put("Style", "网格型");// 重新设置选取位置为文档内容的最后,这样后面的操作就会不会在表格里操作DispatchPtr cont = (DispatchPtr) doc.get("Content");docSelection.invokeN("SetRange", new Object[] { cont.get("End"), cont.get("End") });// 移动到最后docSelection.invoke("EndKey", 6);// 移动到最前docSelection.invoke("HomeKey", 6);// 移动到最前docSelection.invoke("HomeKey", 6);while (find(docSelection, "TDHTEXT"))docSelection.put("Text", "替换后的文字");String path = WordComm.class.getResource("").getPath();if (path != null && path.length() > 0) {path = path.substring(1);}System.out.println("class所在地址:" + path);// 移动到最前docSelection.invoke("HomeKey", 6);while (find(docSelection, "TDHIMG")) {insertImg(docSelection, path + "1.png");}// 移动到最后docSelection.invoke("EndKey", 6);// 插入分页符insertPageBreak(docSelection);// 插入文件insertFile(docSelection, path + "1.rtf");// 保存文档,关闭当前文档,退出Worddoc.invoke("SaveAs", path +"jawin操作后的文档.doc");doc.invoke("Close");app.invoke("Quit");Ole32.CoUninitialize();// 释放对象} catch (Exception e) {e.printStackTrace();}}/*** 打开文档*/public static DispatchPtr openWord(String path) {try {Ole32.CoInitialize();DispatchPtr app = new DispatchPtr("Word.Application");app.put("Visible", true);DispatchPtr docs = (DispatchPtr) app.get("Documents");DispatchPtr doc = (DispatchPtr) docs.invoke("Open", path);app.invoke("Activate"); // 激活当前文档Ole32.CoUninitialize();return doc;} catch (Exception e) {e.printStackTrace();}return null;}/*** 查找*/public boolean find(DispatchPtr docSelection, String findStr) throws COMException {DispatchPtr docFind = (DispatchPtr) docSelection.get("Find");return (Boolean) docFind.invokeN("Execute", new Object[] { findStr, new Boolean(true), new Boolean(true), new Boolean(false), new Boolean(false), new Boolean(false), new Boolean(true) });}/*** 插入图片*/public void insertImg(DispatchPtr docSelection, String imgPath) throws COMException {DispatchPtr inlineShapes = (DispatchPtr) docSelection.get("InlineShapes");inlineShapes.invokeN("AddPicture", new Object[] { imgPath, new Boolean(false), new Boolean(true) });}/*** 插入文件*/public void insertFile(DispatchPtr docSelection, String path) throws COMException {docSelection.invokeN("insertFile", new Object[] { path, "", new Boolean(false), new Boolean(false), new Boolean(false) });}/*** 插入分页符*/public void insertPageBreak(DispatchPtr docSelection) throws COMException {docSelection.invoke("InsertBreak", 7);}/*** 插入换行符*/public void insertRowBreak(DispatchPtr docSelection) throws COMException {docSelection.invoke("InsertBreak", 11);}public static void main(String[] args) {new WordComm().newWord();}}
感谢以下网络资源:
http://blog.csdn.net/luzuobin/article/details/2779029
jawin操作word相关推荐
- python操作word文档(python-docx)
python操作word文档(python-docx) 1. 效果图 1.1 python-docx文档标题段落(等级.加粗.斜体.居中)效果图 1.2 python-docx字体(加粗.斜体.居中. ...
- phpexcel_cell 获取表格样式_Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行...
精品推荐 国内稀缺优秀Java全栈课程-Vue+SpringBoot通讯录系统全新发布! Docker快速手上视频教程(无废话版)[免费] 作者:E-iceblue https://www.cnblo ...
- python在windows下操作word的方法的代码
把写内容过程经常用的一些内容收藏起来,下边内容内容是关于python在windows下操作word的方法的内容,希望能对各位朋友有些好处. import win32com from win32com. ...
- python入门教程2word-使用python操作word
前言 最近工作中,需要将查询的一段时间的数据可视化,并导出为word格式.由于对word操作不熟悉,查阅了一下相关文档,这里简要记录一下如何使用python操作word. 说明 该代码记录了对word ...
- python入门教程2word-python操作word入门
1.安装pywin32 http://sourceforge.net/projects/pywin32 在files里去找适合你的python版本.截止此文,最新版本是pywin32-219快捷路径: ...
- python入门教程2word-入门干货:Python操作Word文件经验分享
原标题:入门干货:Python操作Word文件经验分享 导读:Microsoft Word在当前使用中是占有巨大优势的文字处理器,这使得Word专用的档案格式Word 文件(.docx)成为事实上最通 ...
- java word表格_java操作word的表格
java操作word的表格 最近项目中需要把提交的页面表单的数据动态写在word模板中,简单的写了个工具类.里面有怎眼操作word 中表格的内容,可以在word中已有的表格后面添加行并且可以增加内容. ...
- ASP.NET操作Word文档(转)
ASP.NET操作Word文档(转) 操作WORD配置说明 引入:Word的对象库文件"MSWORD.OLB"(word 2000为MSWORD9.OLB) 1.运行Dcomcnf ...
- word python 域 操作_python实现在windows下操作word的方法
本文实例讲述了python实现在windows下操作word的方法.分享给大家供大家参考.具体实现方法如下: import win32com from win32com.client import D ...
最新文章
- 整合 Google 开源 C++ 代码
- wpcap包含目录如何在2010中进行全局设置
- PHP内核探索:新垃圾回收机制说明
- Oracle在Solaris下的机能与调整简介
- 如何更好使用 ng-zorro-antd 图标
- C获取当前Linux登录的用户名
- python dateutil_安装python dateutil
- 各国语言缩写以及国际域名缩写
- 2019ug最新版本是多少_UG在2019年隆重发布最新版本,让你我都想不到的是..........
- 数据可视化1—蒙特卡罗光线追踪
- arcgis10之获取面要素四至点坐标
- gst-launch-1.0用法小记
- 2008年8月27号,星期三,晴。锲而舍之,朽木不折;锲而不舍,金石可镂。 ——《荀子•劝学》2008年8月27号,星期三,晴。
- c语言父进程创建孙进程,进程的创建与并发的执行-带答案版.doc
- 呆萌却实际可怕的动物:蛇鹫会踢腿 大熊猫攻击凶猛
- 加息+四巫日铁矿石大跌,棕榈油认沽最高30倍,豆一09-01继续反套2022.6.15
- 当你已经25:男生女生都该看
- 无线网经常短连接服务器,我家的无线网不稳定,经常掉线,每次玩游戏到加载的时候,总会出现:”无法连接服务器,请检查您的网络“...
- 聊聊我的 Pandas 学习经历及动手实践
- html代码width什么意思,width:100% 啥意思呢,在什么情况下使用?