CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

花光所有家当求 Jacob 实例。

楼主pensun37(赛扬633)2005-01-14 14:30:05 在 Java / Web 开发 提问

com.jacob.com.ComFailException:   A   COM   exception   has   been   encountered:  
  At   Invoke   of:   Documents  
  Description:   An   unknown   COM   error   has   occured.  
  at   com.jacob.com.Dispatch.invokev(Native   Method)  
  at   com.jacob.activeX.ActiveXComponent.getProperty(ActiveXComponent.java)  
  at   com.pensun.plugin.Exam_2.main(Exam_2.java:29)  
  com.jacob.com.ComFailException:   A   COM   exception   has   been   encountered:  
  At   Invoke   of:   Quit  
  Description:   An   unknown   COM   error   has   occured.  
  at   com.jacob.com.Dispatch.invokev(Native   Method)  
  at   com.jacob.activeX.ActiveXComponent.invoke(ActiveXComponent.java)  
  at   com.pensun.plugin.Exam_2.main(Exam_2.java:38)  
  Exception   in   thread   "main"    
  -------------------------------------------------  
  这是因为com的原因吗? 问题点数:60、回复次数:34Top

1 楼pensun37(赛扬633)回复于 2005-01-14 14:30:41 得分 0

有Jacob   的应用实例也可以Top

2 楼GONHON(流星)回复于 2005-01-14 14:48:31 得分 2

jacob不支持office2000以上的office,要正确运行下列代码必段保证你的电脑上装了office2000或以下的版本!下载jacob包以及jacob.dll文件,将jacob.dll文件的路径加到path中!  
   
  import   com.jacob.com.*;  
  import   com.jacob.activeX.*;  
  import   java.io.*;  
   
  //取得指定目录下面所有的doc文件名称  
  public   class   wordtohtml   {  
  //------------------------------------------------------------------------------  
  //方法原型:   change(String   paths)  
  //功能描述:   将指定目录下面所有的doc文件转化为HTML并存储在相同目录下  
  //输入参数:   String  
  //输出参数:   无  
  //返   回   值:   无  
  //其它说明:   递归  
  //------------------------------------------------------------------------------  
      public   static   void   change(String   paths,   String   savepaths)   {  
   
          File   d   =   new   File(paths);  
  //取得当前文件夹下所有文件和目录的列表  
          File   lists[]   =   d.listFiles();  
          String   pathss   =   new   String("");  
   
  //对当前目录下面所有文件进行检索  
          for   (int   i   =   0;   i   <   lists.length;   i++)   {  
              if   (lists[i].isFile())   {  
                  String   filename   =   lists[i].getName();  
                  String   filetype   =   new   String("");  
  //取得文件类型  
                  filetype   =   filename.substring(   (filename.length()   -   3),   filename.length());  
   
  //判断是否为doc文件  
                  if   (filetype.equals("doc"))   {  
                      System.out.println("当前正在转换......");  
  //打印当前目录路径  
                      System.out.println(paths);  
  //打印doc文件名  
                      System.out.println(filename.substring(0,   (filename.length()   -   4)));  
   
                      ActiveXComponent   app   =   new   ActiveXComponent("Word.Application");   //启动word  
   
                      String   docpath   =   paths   +   filename;  
                      String   htmlpath   =   savepaths   +  
                              filename.substring(0,   (filename.length()   -   4));  
   
                      String   inFile   =   docpath;  
  //要转换的word文件  
                      String   tpFile   =   htmlpath;  
  //HTML文件  
   
                      boolean   flag   =   false;  
   
                      try   {  
                          app.setProperty("Visible",   new   Variant(false));  
  //设置word不可见  
                          Object   docs   =   app.getProperty("Documents").toDispatch();  
                          Object   doc   =   Dispatch.invoke(docs,   "Open",   Dispatch.Method,  
                                                                                    new   Object[]   {inFile,   new   Variant(false),  
                                                                                    new   Variant(true)}  
                                                                                    ,   new   int[1]).toDispatch();  
  //打开word文件  
                          Dispatch.invoke(doc,   "SaveAs",   Dispatch.Method,  
                                                          new   Object[]   {tpFile,   new   Variant(8)}  
                                                          ,   new   int[1]);  
  //作为html格式保存到临时文件  
                          Variant   f   =   new   Variant(false);  
                          Dispatch.call(doc,   "Close",   f);  
                          flag   =   true;  
                      }  
                      catch   (Exception   e)   {  
                          e.printStackTrace();  
                      }  
                      finally   {  
                          app.invoke("Quit",   new   Variant[]   {});  
                      }  
                      System.out.println("转化完毕!");  
                  }  
              }  
              else   {  
                  pathss   =   paths;  
  //进入下一级目录  
                  pathss   =   pathss   +   lists[i].getName()   +   "\\";  
  //递归遍历所有目录  
                  change(pathss,   savepaths);  
              }  
          }  
   
      }  
   
  //------------------------------------------------------------------------------  
  //方法原型:   main(String[]   args)  
  //功能描述:   main文件  
  //输入参数:   无  
  //输出参数:   无  
  //返   回   值:   无  
  //其它说明:   无  
  //------------------------------------------------------------------------------  
      public   static   void   main(String[]   args)   {  
   
          String   paths   =   new   String("E:\\work\\word\\");  
          String   savepaths   =   new   String("E:\\work\\html\\");  
   
          change(paths,   savepaths);  
   
      }  
  }  
  Top

3 楼pensun37(赛扬633)回复于 2005-01-14 15:21:57 得分 0

首先谢谢了,这是转word的,我现在要用到另外一个DLL,   用jacob怎么来调用里面的方法:  
  比如,demo.dll里面有个方法     createFile();我怎么通过jacob   在其他的java类中调用这个方法。  
  最好有实际的例子。拜托了……Top

4 楼GJA106(中文字符)回复于 2005-01-14 15:56:27 得分 2

其它jacob是基于事件方式进行word处理的。如果像楼主所说,必需修改jacob的源代码:java和.h都需要修改--重新用javah生成.h。Top

5 楼singedcat(以夢為馬)回复于 2005-01-14 16:10:48 得分 2

友情up。Top

6 楼pensun37(赛扬633)回复于 2005-01-14 16:12:32 得分 0

这样……那意思是我还得修改原来的DLL(DLL是已经提供好的,没有代码了)。  
  jacob不是说   can   call   com   Automation   from   any   Win32   Java   VM   using   JNI……  
  我不是用来处理word,用要用到DLL其他的方面。…………时间有限呀,只有两天了……Top

7 楼pensun37(赛扬633)回复于 2005-01-14 16:48:26 得分 0

救救我呀~!神拉~!Top

8 楼GJA106(中文字符)回复于 2005-01-14 17:10:20 得分 0

"通过jacob   在其他的java类中调用这个方法。"?不是很明白这句话。  
  如果是在java中调用"另外一个DLL"那就好办--用JNI生成一个单独的DLL,用JNI生成的dll调用“另外一个DLL”。  
  如果是jacrob调用"另外一个DLL"就不好办了。Top

9 楼pensun37(赛扬633)回复于 2005-01-14 17:23:24 得分 0

对呀,就是一个已经有的DLL,没有通过JNI生成……Top

10 楼pensun37(赛扬633)回复于 2005-01-14 19:05:19 得分 0

谁能帮我把下面这段代码用C表现出来:谢谢了~!  
  Set   demo=Server.createobject("DemoReadXml.DemoConnect")         'DemoReadXml.DemoConnect为DLL  
  Tmpstr=demo.SplitXml("C:\test.xml","wenjianbianhao","")         'SplitXml为DLL中的一方法  
  demo.CreateXmlFile("C:\demo.xml")     …………  
  即在C中调用DLL,并使用其中提供的方法……Top

11 楼asjj(叫我ALT+F4)回复于 2005-01-14 19:11:12 得分 0

如果确定jacob的配置没有问题,你只要把demo.dll加到注册表里就可以了!!至于怎么注册dll网上随便搜。有问题再说。Top

12 楼pensun37(赛扬633)回复于 2005-01-14 19:20:33 得分 0

asjj()   :  
  是不是只要把jacob的jar文件放到classpath,把demo.dll放到path下面,就可以调用了吗,不需要改jacob的源程序吗?Top

13 楼asjj(叫我ALT+F4)回复于 2005-01-14 20:35:17 得分 0

怎么扯上改源程序?Top

14 楼pensun37(赛扬633)回复于 2005-01-14 21:34:04 得分 0

你能介始一个实例吗?我也是刚刚开始做JNI,有些东东不太明白。谢谢你了,我们项目组要用这个东东,很急的……Top

15 楼pensun37(赛扬633)回复于 2005-01-14 21:38:57 得分 0

比如我要用到demo.dll中的creatfile()方法Top

16 楼pensun37(赛扬633)回复于 2005-01-15 08:18:44 得分 0

帮帮我呀,大哥大姐们……Top

17 楼GJA106(中文字符)回复于 2005-01-15 08:40:10 得分 0

建议楼主到如下网址看一下:  
  http://java.sun.com/docs/books/tutorial/native1.1/concepts/index.htmlTop

18 楼fengyun1314(追梦)回复于 2005-01-15 08:57:05 得分 2

你的家产只有60,骗人Top

19 楼asjj(叫我ALT+F4)回复于 2005-01-15 12:16:31 得分 0

分就不管了,帮你到底吧。  
  -----------------------  
  test.cls文件内容如下:  
  Public   Function   myAdd(i1   As   Variant,   i2   As   Variant)   As   Variant  
      myAdd   =   i1   +   i2  
  End   Function  
  注:我生成的是mytest.dll,并且这个dll一定要注册!  
  ---------------------------  
  java文件调用如下:  
          public   static   void   main(String[]   args)  
            {  
    System.runFinalizersOnExit(true);  
                Dispatch   test   =   new   Dispatch("mytest.test");  
  //下面打印“8”  
                System.out.println(Dispatch.call(test,   "myAdd",   new   Variant(3),   new   Variant(5)));  
            }  
  ---------------------------  
  就这么简单!自己再推敲一下吧。Top

20 楼slaser(沧海月明)回复于 2005-01-15 14:14:25 得分 2

楼上的老大们,office2003都可以用的。jacob哪有这么原始用法的。这样用不是累死人。  
  package   com.XXXX.util.print;  
   
  //import   word.*;  
  import   java.io.File;  
  import   java.io.FileInputStream;  
  import   java.io.FileOutputStream;  
  import   java.io.IOException;  
  import   java.io.InputStream;  
  import   java.io.OutputStream;  
   
  import   com.jacob.com.Variant;  
  import   it.bigatti.word8.Application;  
  import   it.bigatti.word8.Cell;  
  import   it.bigatti.word8.Document;  
  import   it.bigatti.word8.Documents;  
  import   it.bigatti.word8.Find;  
  import   it.bigatti.word8.Table;  
  import   it.bigatti.word8.Tables;  
  import   it.bigatti.word8.WdFindWrap;  
  import   it.bigatti.word8.WdReplace;  
   
  public   class   PrintHelper   {  
   
      //private   static   Application   app   =   null;  
      //private   static   Documents   docs   =   null;  
      private   static   Object   lock   =   new   Object();  
   
      private   String   docTemplate   =   null;  
      private   String   docFile   =   null;  
   
      private   Application   app   =   new   Application();  
      private   Documents   docs   =   null;  
      private   Document   doc   =   null;  
   
      public   PrintHelper()   {  
   
      }  
   
      /**  
        Constructor.  
        docTemplate   is   src,docFile   is   dest.  
        */  
      public   PrintHelper(String   docTemplate,   String   docFile)   {  
          this.docTemplate   =   docTemplate;  
          this.docFile   =   docFile;  
      }  
   
      public   void   preparePrint()   throws   PrintException   {  
   
          InputStream   in   =   null;  
          OutputStream   out   =   null;  
          try   {  
              in   =   new   FileInputStream(docTemplate);  
              out   =   new   FileOutputStream(docFile);  
   
              byte[]   buf   =   new   byte[1024];  
              int   reads   =   0;  
              while   (   (reads   =   in.read(buf))   >   0)   {  
                  out.write(buf);  
              }  
              out.flush();  
          }  
          catch   (IOException   e)   {  
              java.lang.System.out.print("preparePrint   error:"   +   e.getMessage());  
              throw   new   PrintException("preparePrint   error:"   +   e.getMessage());  
          }  
          finally   {  
              try   {  
                  in.close();  
              }  
              catch   (IOException   e)   {  
                  java.lang.System.out.print("input   stream   cant   be   closed:"   +   e.getMessage());  
                  throw   new   PrintException("input   stream   cant   be   closed:"   +   e.getMessage());  
              }  
              try   {  
                  out.close();  
              }  
              catch   (IOException   e)   {  
                  java.lang.System.out.print("output   stream   cant   be   closed:"   +   e.getMessage());  
                  throw   new   PrintException("output   stream   cant   be   closed:"   +   e.getMessage());  
              }  
          }  
      }  
   
      /**  
        *   开始打印。  
        *   @throws   PrintException  
        */  
      public   void   beginPrint()   throws   PrintException   {  
   
          try   {  
              //Application   app   =   sApp.getApp();  
              docs   =   app.getDocuments();  
              synchronized   (lock)   {  
                  doc   =   docs.open(new   Variant(docTemplate));  
                  doc.saveAs(new   Variant(docFile));  
              }  
              java.lang.System.out.println("docs   have   doc   num:"   +   docs.getCount());  
          }  
          catch   (Exception   e)   {  
              e.printStackTrace();  
              throw   new   PrintException(  
                      "beginPrint   error:docFile   isn't   exists   or   bag   format!");  
          }  
      }  
   
      public   void   stopPrint()   throws   PrintException   {  
          try   {  
              doc.save();  
          }  
          catch   (Exception   e)   {  
              java.lang.System.out.println("warning:this   document   cant   be   saved!");  
              throw   new   PrintException("doc   file   can't   be   saved!");  
          }  
          finally   {  
              try   {  
                  if   (doc   !=   null)   {  
                      doc.close();  
                  }  
              }  
              catch   (Exception   e)   {  
                  java.lang.System.out.println("this   document   cant   be   finallize:"   +  
                                                                            e.getMessage());  
   
              }  
              try   {  
                  if   (app   !=   null)   {  
                      app.quit();  
                      app.release();  
                      app   =   null;  
                  }  
              }  
              catch   (Exception   e)   {  
                  java.lang.System.out.println("this   word   application   cant   be   finallize:"   +  
                                                                            e.getMessage());  
              }  
          }  
      }  
   
      public   void   setDocTemplate(String   docTemplate)   {  
          this.docTemplate   =   docTemplate;  
      }  
   
      public   void   setDocFile(String   docFile)   {  
          this.docFile   =   docFile;  
      }  
   
      public   String   getDocTemplate()   {  
          return   (this.docTemplate);  
      }  
   
      public   String   getDocFile()   {  
          return   (this.docFile);  
      }  
   
      public   File   getFile()   {  
          File   file   =   new   File(docFile);  
          return   file;  
      }  
   
      public   Document   getDoc()   {  
          return   this.doc;  
      }  
   
      public   void   setDoc(Document   doc)   {  
          this.doc   =   doc;  
      }  
   
      /**  
          print   simple   API.  
          this   return   a   temp   file   and   must   be   delete   by   manual.  
        */  
      public   void   insertIntoDoc(  
              int   tableIndex,  
              int   rowIndex,  
              int   colIndex,  
              String   value  
              )   {  
          if   (doc   ==   null)   {  
              return;  
          }  
   
          int   max_tbls   =   doc.range().getTables().getCount();  
   
          if   (tableIndex   >   max_tbls)   {  
              return;  
          }  
          Table   table   =   doc.range().getTables().item(tableIndex);  
   
          int   max_rows   =   table.getRows().getCount();  
          int   max_cols   =   table.getColumns().getCount();  
   
          if   (rowIndex   >   max_rows)   {  
              return;  
          }  
          if   (colIndex   >   max_cols)   {  
              return;  
          }  
          try   {  
              Cell   cell   =   table.cell(rowIndex,   colIndex);  
              cell.getRange().insertAfter(value);  
          }  
          catch   (Exception   e)   {  
              java.lang.System.out.println("warnning:the   insertIntoDoc   method   ivoke   failed!");  
              java.lang.System.out.println("detail:table("   +   tableIndex   +  
                                                                        ")-row("   +   rowIndex   +   ")-col("   +   colIndex   +   ")"   +  
                                                                        "--text:"   +   value);  
              e.printStackTrace();  
          }  
      }  
   
      /**  
          print   simple   API.  
          this   return   a   temp   file   and   must   be   delete   by   manual.  
        */  
      public   void   insertEmbededTable(  
              int   tableIndex,  
              int   rowIndex,  
              int   colIndex,  
              int   subTableIndex,  
              int   subRowIndex,  
              int   subColIndex,  
              String   value  
              )   {  
          if   (doc   ==   null)   {  
              return;  
          }  
          int   max_tbls   =   doc.range().getTables().getCount();  
   
          if   (tableIndex   >   max_tbls)   {  
              return;  
          }  
          Table   table   =   doc.range().getTables().item(tableIndex);  
   
          int   max_rows   =   table.getRows().getCount();  
          int   max_cols   =   table.getColumns().getCount();  
   
          if   (rowIndex   >   max_rows)   {  
              return;  
          }  
          if   (colIndex   >   max_cols)   {  
              return;  
          }  
          try   {  
              Cell   cell   =   table.cell(rowIndex,   colIndex);  
              int   subMax_tbls   =   cell.getRange().getTables().getCount();  
              if   (subTableIndex   >   subMax_tbls)   {  
                  return;  
              }  
              Table   table2   =   cell.getRange().getTables().item(subTableIndex);  
   
              int   subMax_rows   =   table2.getRows().getCount();  
              int   subMax_cols   =   table2.getColumns().getCount();  
   
              if   (subRowIndex   >   subMax_rows)   {  
                  return;  
              }  
              if   (subColIndex   >   subMax_cols)   {  
                  return;  
              }  
              try   {  
                  Cell   cell2   =   table2.cell(subRowIndex,   subColIndex);  
                  cell2.getRange().insertAfter(value);  
              }  
              catch   (Exception   e)   {  
                  System.out.println("warnning:the   insertIntoDoc   method   ivoke   failed!");  
              }  
          }  
          catch   (Exception   e)   {  
              System.out.println("warnning:the   insertIntoDoc   method   ivoke   failed!");  
              e.printStackTrace();  
          }  
      }  
   
  Top

21 楼slaser(沧海月明)回复于 2005-01-15 14:14:32 得分 0

public   void   testDocTable()   {  
          if   (doc   ==   null)   {  
              return;  
          }  
          int   max_tbls   =   doc.range().getTables().getCount();  
          System.out.println("the   maxnum   of   tables   is   max_tbls:"   +   max_tbls);  
          for   (int   i   =   0;   i   <   max_tbls;   i++)   {  
              Table   table   =   null;  
              table   =   doc.range().getTables().item(i   +   1);  
   
              int   max_rows   =   table.getRows().getCount();  
              int   max_cols   =   table.getColumns().getCount();  
              for   (int   j   =   1;   j   <=   max_rows;   j++)   {  
                  for   (int   k   =   1;   k   <=   max_cols;   k++)   {  
                      try   {  
                          Cell   cell   =   table.cell(j,   k);  
                          cell.getRange().insertAfter("("   +   (i   +   1)   +   "-"   +   j   +   "-"   +   k   +   ")");  
                      }  
                      catch   (Exception   e)   {  
                          java.lang.System.out.println("warnning:the   insertIntoDoc   method   ivoke   failed!");  
                          java.lang.System.out.println("detail:table("   +   (i   +   1)   +  
                                                                                    ")-row("   +   j   +   ")-col("   +   k   +   ")"   +  
                                                                                    "--text:"   +   "("   +   (i   +   1)   +   "-"   +   j   +   "-"   +   k   +   ")");  
                          e.printStackTrace();  
                      }  
                  }  
              }  
          }  
          try   {  
              doc.range().getTables().item(1).cell(11,  
                                                                                        1).getRange().getTables().item(1).cell(2,   1).getRange().  
                      insertAfter("asdfasdfasdf\nasdfasdf");  
          }  
          catch   (Exception   e)   {  
              e.printStackTrace();  
          }  
   
      }  
   
      /**  
        *replace   api  
        */  
      public   void   replace(String   oldStr,   String   newStr)   {  
   
          if   (doc   ==   null)   {  
              return;  
          }  
   
          if   (oldStr   ==   null   ||   "".equals(oldStr))   {  
              return;  
          }  
          if   (newStr   ==   null)   {  
              newStr   =   "";  
          }  
   
          try   {  
              Find   find   =   doc.range().getFind();  
              find.execute(new   Variant(oldStr),  
                                        new   Variant(false),  
                                        new   Variant(true),  
                                        new   Variant(false),  
                                        new   Variant(false),  
                                        new   Variant(false),  
                                        new   Variant(true),  
                                        new   Variant(WdFindWrap.wdFindContinue),  
                                        new   Variant(false),  
                                        new   Variant(newStr),  
                                        new   Variant(WdReplace.wdReplaceAll)  
                                        );  
          }  
          catch   (Exception   e)   {  
              java.lang.System.out.println("warnning:the   replace   method   ivoke   failed!repalce"   +  
                                                                        oldStr   +   "   with   "   +   newStr);  
              e.printStackTrace();  
          }  
      }  
   
      public   void   createTable(int   rows,   int   cols)   throws   PrintException   {  
          if   (doc   ==   null)   {  
              return;  
          }  
   
          Tables   tbls   =   doc.range().getTables();  
          try   {  
              tbls.add(doc.range(),   rows,   cols);  
          }  
          catch   (Exception   e)   {  
              e.printStackTrace();  
              throw   new   PrintException(e.getMessage());  
          }  
      }  
   
      public   void   addRow(int   tblIdx)   throws   PrintException   {  
          if   (tblIdx   <   1)   {  
              return;  
          }  
          if   (doc   ==   null)   {  
              return;  
          }  
   
          Tables   tbls   =   doc.range().getTables();  
          int   max_tbls   =   tbls.getCount();  
          if   (tblIdx   >   max_tbls)   {  
              return;  
          }  
   
          try   {  
              Table   tbl   =   tbls.item(tblIdx);  
              tbl.getRows().add();  
          }  
          catch   (Exception   e)   {  
              e.printStackTrace();  
              throw   new   PrintException(e.getMessage());  
          }  
      }  
   
  //add   sub   table   rows  
      public   void   addSubTableRow(int   tblIdx,   int   rowIndex,   int   colIndex,   int   subTblIndex)   throws  
              PrintException   {  
          if   (tblIdx   <   1)   {  
              return;  
          }  
          if   (doc   ==   null)   {  
              return;  
          }  
   
          Tables   tbls   =   doc.range().getTables();  
          int   max_tbls   =   tbls.getCount();  
          if   (tblIdx   >   max_tbls)   {  
              return;  
          }  
   
          try   {  
              Table   tbl   =   tbls.item(tblIdx);  
              tbl.getRows().add();  
          }  
          catch   (Exception   e)   {  
              e.printStackTrace();  
              throw   new   PrintException(e.getMessage());  
          }  
      }  
   
      //sample.  
      public   static   void   main(String[]   args)   {  
          try   {  
              PrintHelper   ph   =   new   PrintHelper();  
              ph.setDocFile("c:/test.doc");  
              ph.setDocTemplate("c:/test1.doc");  
              ph.beginPrint();  
   
              ph.replace("[bbb]",   "bbbffffffff");  
   
              ph.stopPrint();  
   
              //get   the   file  
              File   file   =   ph.getFile();  
          }  
          catch   (Exception   e)   {  
              e.printStackTrace();  
          }  
      }  
  }  
  Top

22 楼slaser(沧海月明)回复于 2005-01-15 14:18:26 得分 0

it.bigatti.word8是我根据bigatti包装工具生成的,你到网上找一下例子。只要vba可以用的,jacob都有相同的用法。vb的api提示需要的那个文件,就是那个工具需要的文件,是*.olbTop

23 楼pensun37(赛扬633)回复于 2005-01-15 18:15:00 得分 0

谢谢大家了,世上还是好人多呀~!Top

24 楼pensun37(赛扬633)回复于 2005-01-16 14:36:33 得分 0

com.jacob.com.ComFailException:   Can't   get   object   clsid   from   progid  
  at   com.jacob.com.Dispatch.createInstance(Native   Method)  
  at   com.jacob.com.Dispatch.<init>(Dispatch.java)  
  at   com.pensun.plugin.Cxacdemo.main(Cxacdemo.java:30)  
  Exception   in   thread   "main"    
  ---------------------------------------------------------------------  
  这是什么错误Top

25 楼asjj(叫我ALT+F4)回复于 2005-01-16 15:09:02 得分 0

晕,我白写了Top

26 楼asjj(叫我ALT+F4)回复于 2005-01-16 15:11:05 得分 0

方便的话,把你那个dll发给我,我来调一下  
  a_chi_chi@163.comTop

27 楼asjj(叫我ALT+F4)回复于 2005-01-16 15:13:27 得分 50

如果按我上面说的做是可以的。Top

28 楼pensun37(赛扬633)回复于 2005-01-16 15:25:43 得分 0

我的DLL是deiphi生成的,这应该跟这个没什么关系吧Top

29 楼asjj(叫我ALT+F4)回复于 2005-01-16 15:38:01 得分 0

如果是标准的dll,不用注册就可以用。  
  vc和vb生成的dll,我在java用过,deiphi的没用过。不过照错误提示来看,还是配置问题。Top

30 楼pensun37(赛扬633)回复于 2005-01-17 09:12:48 得分 0

asjj():  
  我已经给你发邮件了,现在我实在是没办法了。任务很紧,还有其它很多事要做,完成之后,一定重分相谢!Top

31 楼guigui179(晕倒)回复于 2005-01-17 10:53:07 得分 0

jacobTop

32 楼kingxyz()回复于 2005-01-17 11:39:39 得分 0

jacob支持OFFICE   XP和2003Top

33 楼pensun37(赛扬633)回复于 2005-01-17 12:03:24 得分 0

解决了,谢谢你asjj()   ,谢谢大家。  
  尽管是身无分文了,但心里高兴。Top

34 楼joinstar()回复于 2005-04-27 17:53:39 得分 0

import   com.jacob.com.*;  
  import   com.jacob.activeX.*;  
  import   java.io.*;  
   
  //取得指定目录下面所有的doc文件名称  
  public   class   wordtohtml   {  
  //------------------------------------------------------------------------------  
  //方法原型:   change(String   paths)  
  //功能描述:   将指定目录下面所有的doc文件转化为HTML并存储在相同目录下  
  //输入参数:   String  
  //输出参数:   无  
  //返   回   值:   无  
  //其它说明:   递归  
  //------------------------------------------------------------------------------  
      public   static   void   change(String   paths,   String   savepaths)   {  
   
          File   d   =   new   File(paths);  
  //取得当前文件夹下所有文件和目录的列表  
          File   lists[]   =   d.listFiles();  
          String   pathss   =   new   String("");  
   
  //对当前目录下面所有文件进行检索  
          for   (int   i   =   0;   i   <   lists.length;   i++)   {  
              if   (lists[i].isFile())   {  
                  String   filename   =   lists[i].getName();  
                  String   filetype   =   new   String("");  
  //取得文件类型  
                  filetype   =   filename.substring(   (filename.length()   -   3),   filename.length());  
   
  //判断是否为doc文件  
                  if   (filetype.equals("doc"))   {  
                      System.out.println("当前正在转换......");  
  //打印当前目录路径  
                      System.out.println(paths);  
  //打印doc文件名  
                      System.out.println(filename.substring(0,   (filename.length()   -   4)));  
   
                      ActiveXComponent   app   =   new   ActiveXComponent("Word.Application");   //启动word  
   
                      String   docpath   =   paths   +   filename;  
                      String   htmlpath   =   savepaths   +  
                              filename.substring(0,   (filename.length()   -   4));  
   
                      String   inFile   =   docpath;  
  //要转换的word文件  
                      String   tpFile   =   htmlpath;  
  //HTML文件  
   
                      boolean   flag   =   false;  
   
                      try   {  
                          app.setProperty("Visible",   new   Variant(false));  
  //设置word不可见  
                          Object   docs   =   app.getProperty("Documents").toDispatch();  
                          Object   doc   =   Dispatch.invoke(docs,   "Open",   Dispatch.Method,  
                                                                                    new   Object[]   {inFile,   new   Variant(false),  
                                                                                    new   Variant(true)}  
                                                                                    ,   new   int[1]).toDispatch();  
  //打开word文件  
                          Dispatch.invoke(doc,   "SaveAs",   Dispatch.Method,  
                                                          new   Object[]   {tpFile,   new   Variant(8)}  
                                                          ,   new   int[1]);  
  //作为html格式保存到临时文件  
                          Variant   f   =   new   Variant(false);  
                          Dispatch.call(doc,   "Close",   f);  
                          flag   =   true;  
                      }  
                      catch   (Exception   e)   {  
                          e.printStackTrace();  
                      }  
                      finally   {  
                          app.invoke("Quit",   new   Variant[]   {});  
                      }  
                      System.out.println("转化完毕!");  
                  }  
              }  
              else   {  
                  pathss   =   paths;  
  //进入下一级目录  
                  pathss   =   pathss   +   lists[i].getName()   +   "\\";  
  //递归遍历所有目录  
                  change(pathss,   savepaths);  
              }  
          }  
   
      }  
   
  //------------------------------------------------------------------------------  
  //方法原型:   main(String[]   args)  
  //功能描述:   main文件  
  //输入参数:   无  
  //输出参数:   无  
  //返   回   值:   无  
  //其它说明:   无  
  //------------------------------------------------------------------------------  
      public   static   void   main(String[]   args)   {  
   
          String   paths   =   new   String("E:\\work\\word\\");  
          String   savepaths   =   new   String("E:\\work\\html\\");  
   
          change(paths,   savepaths);  
   
      }  
  }  
   
  请问下这个程序在officexp中怎么实现都Top

相关问题

  • 全部家当:(
  • 一个实例
  • jsp实例??
  • 请看实例!
  • 寻求实例
  • 求Validator实例
  • 求InstallComponent实例
  • 最后一点家当
  • 全部家当送高手!!
  • 类的实例化

关键词

  • 文件
  • cell
  • jacob
  • printexception
  • tbl
  • submax
  • doc
  • docfile
  • getcount
  • doctemplate

得分解答快速导航

  • 帖主:pensun37
  • GONHON
  • GJA106
  • singedcat
  • fengyun1314
  • slaser
  • asjj

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo