在网上查了很多代码,大部分都是这种写法,但是执行报错,jacob-1.18,   1.17,  1.14版本都试过了,都报同样的错Dispatch rows = Dispatch.get(table, "Rows").toDispatch();
Dispatch row = Dispatch.call(rows, "Item", new Variant(2)).toDispatch();    
Dispatch.call(row, "Delete");
报错如下:2018-06-10 18:14:24 [ERROR] {com.tjsoft.auction.controller.onlineform.maker.SpecialWorkTimeMaker} (Invoke of: Item
Source: 
Description: 
)
com.jacob.com.ComFailException: Invoke of: Item
Source: 
Description:  at com.jacob.com.Dispatch.invokev(Native Method)
at com.jacob.com.Dispatch.invokev(Dispatch.java:858)
at com.jacob.com.Dispatch.callN(Dispatch.java:455)
at com.jacob.com.Dispatch.call(Dispatch.java:544)
at com.tjsoft.auction.util.Java2Word.delRows(Java2Word.java:277)
at com.tjsoft.auction.controller.onlineform.maker.SpecialWorkTimeMaker.doit(SpecialWorkTimeMaker.java:98)
at com.tjsoft.auction.controller.onlineform.maker.SpecialWorkTimeMaker.create(SpecialWorkTimeMaker.java:44)
at com.tjsoft.auction.controller.onlineform.OnlineFormController.download(OnlineFormController.java:61)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.jfinal.aop.Invocation.invoke(Invocation.java:71)
at com.jfinal.plugin.activerecord.tx.TxByRegex$1.run(TxByRegex.java:58)
at com.jfinal.plugin.activerecord.DbPro.tx(DbPro.java:668)
at com.jfinal.plugin.activerecord.DbPro.tx(DbPro.java:704)
at com.jfinal.plugin.activerecord.tx.TxByRegex.intercept(TxByRegex.java:56)
at com.jfinal.aop.Invocation.invoke(Invocation.java:65)
at com.system.interceptor.AuthenticationInterceptor.intercept(AuthenticationInterceptor.java:112)
at com.jfinal.aop.Invocation.invoke(Invocation.java:65)
at com.system.interceptor.ExceptionAndLogInterceptor.intercept(ExceptionAndLogInterceptor.java:32)
at com.jfinal.aop.Invocation.invoke(Invocation.java:65)
at com.jfinal.ext.interceptor.SessionInViewInterceptor.intercept(SessionInViewInterceptor.java:44)
at com.jfinal.aop.Invocation.invoke(Invocation.java:65)
at com.system.interceptor.ParamInterceptor.intercept(ParamInterceptor.java:41)
at com.jfinal.aop.Invocation.invoke(Invocation.java:65)
at com.jfinal.core.ActionHandler.handle(ActionHandler.java:78)
at com.system.handler.XssHandler.handle(XssHandler.java:42)
at com.system.handler.EncodingHandler.handle(EncodingHandler.java:27)
at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:72)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.tjsoft.auction.filter.InjectFilter.doFilter(InjectFilter.java:121)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:722)

解决方案 »

  1.   

    public void delRow(int tableIndex, int rowIndex) {
    Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();
    // 要填充的表格
    Dispatch table = Dispatch.call(tables, "Item", new Variant(tableIndex))
    .toDispatch();
    // 表格的所有行
    Dispatch rows = Dispatch.get(table, "Rows").toDispatch();
    Object temp1 = Dispatch.get(rows, "Count");
    int count = Integer.parseInt(temp1.toString());
    if (count > 1 && rowIndex <= count) {
    Dispatch row = Dispatch.call(rows, "Item",new Variant(5)).toDispatch();
    Dispatch.call(row, "Delete");
    }
    }参看下这个吧