请问jacob操作word表格,如何删除表格指定的行

wangearn 2018-06-10 06:15:58
在网上查了很多代码,大部分都是这种写法,但是执行报错,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)



...全文
985 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
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");
}
}

参看下这个吧
  • 打赏
  • 举报
回复
我这里没有问题。表里是不是超过两行?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧