// 启动word应用程序(Microsoft Office Word 2003)
ActiveXComponent app = new ActiveXComponent("Word.Application");
System.out.println("*****正在转换...*****");
try
{
// 设置word应用程序不可见
app.setProperty("Visible", new Variant(false));
// documents表示word程序的所有文档窗口,(word是多文档应用程序)
Dispatch docs = app.getProperty("Documents").toDispatch();
// 打开要转换的word文件
Dispatch doc = Dispatch.invoke(
docs,
"Open",
Dispatch.Method,
new Object[] { docfile, new Variant(false),
new Variant(true) }, new int[1]).toDispatch();
// 作为html格式保存到临时文件
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
htmlfile, new Variant(WORD_HTML) }, new int[1]);
// 关闭word文件
Dispatch.call(doc, "Close", new Variant(false));
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
//关闭word应用程序
app.invoke("Quit", new Variant[] {});
}
System.out.println("*****转换完毕********");
}
19 个解决方案
#1
虽然看不明白,但是好像好厉害的样子,帮顶
#2
自己顶一个!!!求回复啊!
#3
难道是作为Service启动时的登录身份有问题?或者是Service起早了,Office组件还没发挥作用?
#4
应该不会是Service起早了吧,我是开机之后再手动启动的服务也不行,我想也有可能是Service启动的时候登陆身份有问题,但是具体是什么问题呢?问题又怎么解决呢?为什么有的电脑也可以呢?
#5
LZ的Service在服务窗体里能看得到吗?如果能看到,试着在登录页面中把允许服务与桌面交互勾上,或者用在登录页面中存入某一个管理员账户密码试试
#6
我照这样做了,还是不行啊!
#7
startup.bat运行的时候用的用户是你当前的用户。而服务启动的时候,用的是System用户。
以前碰到过类似问题,用服务启动的进程(Runtime.exec,Process等)时候,会挂起很长时间。后来的用了两种解决方案:
1 通过JNI启动进程
2 读取Process的inputStream(不是每种情况都有效)
至于你这个,不是很清楚具体情况。但是基本上就是我上面说的问题相关
以前碰到过类似问题,用服务启动的进程(Runtime.exec,Process等)时候,会挂起很长时间。后来的用了两种解决方案:
1 通过JNI启动进程
2 读取Process的inputStream(不是每种情况都有效)
至于你这个,不是很清楚具体情况。但是基本上就是我上面说的问题相关
#8
补充一下:读取process的inputstream(对于java来说是输入,对于进程来说,是输出)。另外,哪怕进程一个字节也没输出,也是有效果的。
#9
我在有些电脑上可以正常启动,有的电脑上不可以,为什么呢?
#10
jacob这个包可能需要windows底层的某个服务,你开机启动的话,不能保证这个需要的服务一定在你tomcat启动之前就已经运行了
#11
到底是有的电脑用服务也很快,有的电脑用startup.bat也很慢??
还是,如我猜测的那样,慢的都是服务?
#12
楼主你的问题解决没有,我也遇到这个问题了~
求帮助啊
还有上边高手说的
1 通过JNI启动进程
2 读取Process的inputStream(不是每种情况都有效)
完全看不懂啊 - - -- -
求帮助啊
还有上边高手说的
1 通过JNI启动进程
2 读取Process的inputStream(不是每种情况都有效)
完全看不懂啊 - - -- -
#13
这个有可能,win7 和 xp 在操作系统内置的服务方面的配置肯定略有不同,毕竟 win7 比 xp 多出了很多后台服务,谁知道它们做什么的。
另外你并没有提供当 win7 下失败后有什么错误日志,这个是关键的地方,它能提示我们错误的原因是什么。
#14
Word 转换启动 winword.exe 是正常的,这表示它是直接调用 word 的 OLE 功能,并不是自己来转换。你在 outlook 或 excel 中嵌入一个 word 文件双击word文件后就能发现除了外框看下来没变,其它从菜单到工具栏到窗口内的内容全部被替换成了 word 程序的啊。这时候 excel 只是个外壳,没有任何实际功能。
#15
这位大哥,请问你的问题解决了吗?我现在也遇到同样的问题,该解决啊?
#16
1、要设置Service“允许服务与桌面进行交互”
2、要设置DCOM组件的权限
命令行输入dcomcnfg(64位系统输入comexp.msc -32)
在组件服务-DOCM配置中找到Word,在属性-标识中选择“交互式用户”
2、要设置DCOM组件的权限
命令行输入dcomcnfg(64位系统输入comexp.msc -32)
在组件服务-DOCM配置中找到Word,在属性-标识中选择“交互式用户”
#17
我尝试过#16的做法,是可以的,但前提是用户重启服务器,需要用管理员登录系统,初始化系统桌面,后面我改为让用户手动启动了。
#18
我通过tomcat 的start .bat 或myeclipse 都能实现调用打印机打印word 但是服务启动下程序运行了打印机却没反应
#19
#20
#1
虽然看不明白,但是好像好厉害的样子,帮顶
#2
自己顶一个!!!求回复啊!
#3
难道是作为Service启动时的登录身份有问题?或者是Service起早了,Office组件还没发挥作用?
#4
难道是作为Service启动时的登录身份有问题?或者是Service起早了,Office组件还没发挥作用?
应该不会是Service起早了吧,我是开机之后再手动启动的服务也不行,我想也有可能是Service启动的时候登陆身份有问题,但是具体是什么问题呢?问题又怎么解决呢?为什么有的电脑也可以呢?
#5
LZ的Service在服务窗体里能看得到吗?如果能看到,试着在登录页面中把允许服务与桌面交互勾上,或者用在登录页面中存入某一个管理员账户密码试试
#6
LZ的Service在服务窗体里能看得到吗?如果能看到,试着在登录页面中把允许服务与桌面交互勾上,或者用在登录页面中存入某一个管理员账户密码试试
我照这样做了,还是不行啊!
#7
startup.bat运行的时候用的用户是你当前的用户。而服务启动的时候,用的是System用户。
以前碰到过类似问题,用服务启动的进程(Runtime.exec,Process等)时候,会挂起很长时间。后来的用了两种解决方案:
1 通过JNI启动进程
2 读取Process的inputStream(不是每种情况都有效)
至于你这个,不是很清楚具体情况。但是基本上就是我上面说的问题相关
以前碰到过类似问题,用服务启动的进程(Runtime.exec,Process等)时候,会挂起很长时间。后来的用了两种解决方案:
1 通过JNI启动进程
2 读取Process的inputStream(不是每种情况都有效)
至于你这个,不是很清楚具体情况。但是基本上就是我上面说的问题相关
#8
补充一下:读取process的inputstream(对于java来说是输入,对于进程来说,是输出)。另外,哪怕进程一个字节也没输出,也是有效果的。
#9
startup.bat运行的时候用的用户是你当前的用户。而服务启动的时候,用的是System用户。
以前碰到过类似问题,用服务启动的进程(Runtime.exec,Process等)时候,会挂起很长时间。后来的用了两种解决方案:
1 通过JNI启动进程
2 读取Process的inputStream(不是每种情况都有效)
至于你这个,不是很清楚具体情况。但是基本上就是我上面说的问题相关
我在有些电脑上可以正常启动,有的电脑上不可以,为什么呢?
#10
jacob这个包可能需要windows底层的某个服务,你开机启动的话,不能保证这个需要的服务一定在你tomcat启动之前就已经运行了
#11
我在有些电脑上可以正常启动,有的电脑上不可以,为什么呢?
到底是有的电脑用服务也很快,有的电脑用startup.bat也很慢??
还是,如我猜测的那样,慢的都是服务?
#12
楼主你的问题解决没有,我也遇到这个问题了~
求帮助啊
还有上边高手说的
1 通过JNI启动进程
2 读取Process的inputStream(不是每种情况都有效)
完全看不懂啊 - - -- -
求帮助啊
还有上边高手说的
1 通过JNI启动进程
2 读取Process的inputStream(不是每种情况都有效)
完全看不懂啊 - - -- -
#13
jacob这个包可能需要windows底层的某个服务,你开机启动的话,不能保证这个需要的服务一定在你tomcat启动之前就已经运行了
这个有可能,win7 和 xp 在操作系统内置的服务方面的配置肯定略有不同,毕竟 win7 比 xp 多出了很多后台服务,谁知道它们做什么的。
另外你并没有提供当 win7 下失败后有什么错误日志,这个是关键的地方,它能提示我们错误的原因是什么。
#14
Word 转换启动 winword.exe 是正常的,这表示它是直接调用 word 的 OLE 功能,并不是自己来转换。你在 outlook 或 excel 中嵌入一个 word 文件双击word文件后就能发现除了外框看下来没变,其它从菜单到工具栏到窗口内的内容全部被替换成了 word 程序的啊。这时候 excel 只是个外壳,没有任何实际功能。
jacob这个包可能需要windows底层的某个服务,你开机启动的话,不能保证这个需要的服务一定在你tomcat启动之前就已经运行了
这个有可能,win7 和 xp 在操作系统内置的服务方面的配置肯定略有不同,毕竟 win7 比 xp 多出了很多后台服务,谁知道它们做什么的。
另外你并没有提供当 win7 下失败后有什么错误日志,这个是关键的地方,它能提示我们错误的原因是什么。
#15
这位大哥,请问你的问题解决了吗?我现在也遇到同样的问题,该解决啊?
#16
1、要设置Service“允许服务与桌面进行交互”
2、要设置DCOM组件的权限
命令行输入dcomcnfg(64位系统输入comexp.msc -32)
在组件服务-DOCM配置中找到Word,在属性-标识中选择“交互式用户”
2、要设置DCOM组件的权限
命令行输入dcomcnfg(64位系统输入comexp.msc -32)
在组件服务-DOCM配置中找到Word,在属性-标识中选择“交互式用户”
#17
我尝试过#16的做法,是可以的,但前提是用户重启服务器,需要用管理员登录系统,初始化系统桌面,后面我改为让用户手动启动了。
#18
我通过tomcat 的start .bat 或myeclipse 都能实现调用打印机打印word 但是服务启动下程序运行了打印机却没反应