知识大全 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使用总结

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

知识大全 java抽取word,pdf的四种武器

  chris()  毕业于中国人民大学信息学院  年月    很多人用java进行文档操作时经常会遇到一个问题就是如何获得wordexcelpdf等文档的内容?我研究了一下在这里总结一下抽取word

知识大全 JAVA中把WORD文档直接转换成html

JAVA中把WORD文档直接转换成html  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  jac

知识大全 Java中根据模板导出数据到word的解决方案

Java中根据模板导出数据到word的解决方案  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  J

知识大全 c# word操作

  word操作包括打开word文档创建表格合并单元格保存退出  WordOperator  usingSystem;   usingSystemWeb; &n

知识大全 用javascript操作word文档

  向word中写入内容  首先在word中设置书签如书签名为bookmarkjavascript中可以这样写  varword;word=newActiveXObject(WordApplicati

知识大全 在Word里面怎么重复操作

在Word里面怎么重复操作!  以下文字资料是由(历史新知网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在Word里面怎么重复操作!F4