知识大全 java操作word
Posted 文件
篇首语:生活的真谛从来都不在别处,就在日常一点一滴的奋斗里。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 java操作word相关的知识,希望对你有一定的参考价值。
最近在做项目的时候需要这么一个功能 客户有一大堆word格式的模板 需要我们用程序向模板里面填充一些数据 如果是直接重新写一个Word 用POI或Itext都可以搞定 关键是读取并解析 而且Word里有表格 图片等其他东西 这两个框架要解析就比较麻烦 然而用jacob却可以轻松搞定
下面是借鉴了别人已经包装好了的代码
import jacob activeX ActiveXComponent;
import Dispatch;
import Variant;
public class WordHandle
//运行时的Word程序
private ActiveXComponent app;
//word对象
private Dispatch words;
//当前的word文档
private Dispatch doc;
//当前光标位置
private Dispatch cursor;
//当前文档是否只读
private boolean readOnly;
//当前文档中所有表格
private Dispatch tables;
//当前所在表格
private Dispatch table;
private int count;
public WordHandle()
this app = new ActiveXComponent( Word Application );
this app setProperty( Visible new Variant(false)); // 设置word不可见
words = this app getProperty( Documents ) toDispatch();
this doc = null;
this cursor = null;
this readOnly = true;
unt = ;
public boolean open(String fileName boolean readOnly) throws Exception
if (doc != null)
System out println( 当前文件未关闭 );
return false;
this doc = Dispatch invoke(this words Open Dispatch Method new Object[] fileName new Variant(false) new Variant(readOnly) new int[ ]) toDispatch();
this cursor = app getProperty( Selection ) toDispatch();
this tables = Dispatch get(this doc Tables ) toDispatch();
this readOnly = readOnly;
unt = Dispatch get(Dispatch get(this doc Words ) toDispatch() Count ) getInt() ;
System out println( 打开文件 + fileName + (readOnly ? ReadOnly : Writable ));
return true;
public boolean newFile() throws Exception
if (doc != null)
System out println( 当前文件未关闭 );
return false;
this doc = Dispatch call(this words Add ) toDispatch();
this readOnly = false;
this cursor = app getProperty( Selection ) toDispatch();
this tables = Dispatch get(this doc Tables ) toDispatch();
System out println( 新建word文档 );
return true;
public boolean close()
String fileName = null;
if (this doc != null)
try
fileName = Dispatch get(this doc Name ) getString();
Dispatch call(this doc Close new Variant(false));
catch (Exception e)
e printStackTrace();
finally
this doc = null;
System out println( 关闭文件 + fileName);
return true;
public boolean quit()
try
this app invoke( Quit new Variant[] );
catch (Exception e)
e printStackTrace();
System out println( 退出word );
return true;
public boolean saveAs(String fileName) throws Exception
if (this doc == null)
System out println( 当前无文件 );
return false;
else
Dispatch call(this doc SaveAs fileName);
System out println( 另存为 + fileName);
return true;
public boolean save() throws Exception
if (this doc == null)
System out println( 当前无文档 无法保存 );
return false;
else
if (this readOnly)
System out println( 只读文档 保存失败 );
return false;
Dispatch call(this doc Save );
System out println( 保存完成 );
return true;
public boolean moveRight(int steps) throws Exception
//int start = Dispatch get(this cursor Start ) getInt();
//Dispatch put(this cursor Start start + steps);
for (int i= ; i<steps; i++)
Dispatch call(cursor MoveRight );
return true;
public boolean moveLeft(int steps) throws Exception
for (int i= ; i<steps; i++)
Dispatch call(cursor MoveLeft );
return true;
public int search(String str) throws Exception
// 从cursor所在位置开始查询
Dispatch find = Dispatch call(this cursor Find ) toDispatch();
// 设置要查找的内容
Dispatch put(find Text str);
// 向前查找
Dispatch put(find Forward True );
// 设置格式
Dispatch put(find Format True );
// 大小写匹配
Dispatch put(find MatchCase True );
// 全字匹配
Dispatch put(find MatchWholeWord True );
// 查找
if (!Dispatch call(find Execute ) getBoolean())
return ;
else
return Dispatch get(this cursor Start ) getInt();
public int searchOnly(String str) throws Exception
// 从cursor所在位置开始查询
Dispatch find = Dispatch call(this cursor Find ) toDispatch();
// 设置要查找的内容
Dispatch put(find Text str);
// 向前查找
Dispatch put(find Forward True );
// 大小写匹配
Dispatch put(find MatchCase True );
// 全字匹配
Dispatch put(find MatchWholeWord True );
if (!Dispatch call(find Execute ) getBoolean())
return ;
else
int start = Dispatch get(this cursor Start ) getInt();
Dispatch put(this cursor End unt);
//System out println(start);
return start;
public String getBeeen(int start int end) throws Exception
Dispatch range = Dispatch get(this cursor Range ) toDispatch();
Dispatch call(range SetRange start end);
return Dispatch get(range Text ) getString();
public String getLineAfter(int start) throws Exception
Dispatch put(this cursor Start start);
int length = Dispatch call(this cursor EndKey ) getInt() + start;
return getBeeen(start length);
public String getLine(int position) throws Exception
Dispatch put(this cursor Start position);
Dispatch call(this cursor SelectRow );
int start = Dispatch get(this cursor Start ) getInt();
int end = Dispatch get(this cursor End ) getInt();
return getBeeen(start start + end);
public boolean gotoPage(int index) throws Exception
Dispatch invoke(this cursor Goto Dispatch Method new Object[] String valueOf(index) new int[ ]);
//Dispatch call(this cursor GoTo wdGoToLine wdGoToNext String valueOf(index) null);
return true;
public int getCurrentCursor() throws Exception
return Dispatch get(this cursor Start ) getInt();
public boolean setCursorMode() throws Exception
Dispatch put(this cursor End Dispatch get(this cursor Start ) getInt());
return true;
public boolean gotoHome() throws Exception
Dispatch put(this cursor Start );
return true;
public boolean insert(int steps String str) throws Exception
int start = Dispatch get(this cursor Start ) getInt() + steps;
Dispatch put(this cursor Start start);
Dispatch call(this cursor InsertBefore str);
//this getCount();
Dispatch put(this cursor Start start + str length());
//System out println(Dispatch get(this cursor Start ) getInt() + + (Dispatch get(this cursor Start ) getInt()+Dispatch get(this cursor End ) getInt()));
return true;
public boolean replace(String str) throws Exception
Dispatch put(this cursor Text str);
return true;
public int getTableNum() throws Exception
return Dispatch get(this tables Count ) getInt();
public boolean setCurrentTable(int index) throws Exception
this table = Dispatch call(this tables Item new Variant(index)) toDispatch();
Dispatch call(this table Select );
return true;
public String getCell(int row int col) throws Exception
Dispatch cell = Dispatch call(table Cell Integer toString(row) Integer toString(col)) toDispatch();
Dispatch call(cell Select );
String tmp = Dispatch get(this cursor Text ) getString();
//System out println( + tmp);
if (tmp length() > )
return tmp substring( tmp length() );
else
return ;
public boolean replaceCell(int row int col String str) throws Exception
Dispatch cell = Dispatch call(table Cell Integer toString(row) Integer toString(col)) toDispatch();
Dispatch call(cell Select );
Dispatch put(this cursor Text str);
return true;
public static void main(String args[])
WordHandle word = new WordHandle();
try
word open( D://doc//tax//开业登记合并事项实地调查表 doc false);
System out println(word getTableNum());
word setCurrentTable( );
word replaceCell( old Name );
word replaceCell( 经营范围 );
word replaceCell( );
word replaceCell( );
word replaceCell( );
word saveAs( D://开业登记合并事项实地调查表 doc );
word close();
word quit();
catch (Exception e)
当然要运行上面的代码需要下载jacob 下载地址为 project
cha138/Article/program/Java/hx/201311/26729相关参考
Java调用com组件操作word使用总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一准备
知识大全 java对word、excel、pdf等操作综合文章
Java操作PDFJava操作WordExcelAccess参考:?forum=&thread=&tstart=&trange=JavaExcelAPI文档一个jacob操
知识大全 Java操作Word,Excel,Access,IE,OutLook, PDF 等
Java操作Word,Excel,Access,IE,OutLook,PDF等 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,
知识大全 通过jacob对excel,word进行打印等操作
因为项目有个需求要求能够在某个预定时间对特定报表进行自动打印报表的形式主要是excel如果是c++或者c#什么的简直是小菜一碟可惜偏偏是java实现并且这又不同于常见的页面手工打印可以通过java
chris() 毕业于中国人民大学信息学院 年月 很多人用java进行文档操作时经常会遇到一个问题就是如何获得wordexcelpdf等文档的内容?我研究了一下在这里总结一下抽取word
JAVA中把WORD文档直接转换成html 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! jac
Java中根据模板导出数据到word的解决方案 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! J
word操作包括打开word文档创建表格合并单元格保存退出 WordOperator usingSystem; usingSystemWeb; &n
向word中写入内容 首先在word中设置书签如书签名为bookmarkjavascript中可以这样写 varword;word=newActiveXObject(WordApplicati
在Word里面怎么重复操作! 以下文字资料是由(历史新知网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在Word里面怎么重复操作!F4