小编今天遇到个问题,正如标题所说的。百度了好久,没有突破,还是在最后,有了希望!!!

直接附上代码

  1. /*** doc 格式 */
  2. private static final int DOC_FMT = 0;
  3. /*** docx 格式 */
  4. private static final int DOCX_FMT = 12;
  5. public static void main(String[] args) {
  6. DocFmtConvert dfc = new DocFmtConvert();
  7. String srcDocPath = "D:/test.doc";
  8. String descDocPath = "D:/test.docx";
  9. try {
  10. dfc.convertDocFmt(srcDocPath, descDocPath, DOCX_FMT);
  11. } catch (Exception e) {
  12. e.printStackTrace();
  13. }
  14. }
  15. /**
  16. * 根据格式类型转换 word 文件
  17. *
  18. * @param srcPath 源文件
  19. * @param descPath 目标文件
  20. * @param fmt 所转格式
  21. */
  22. public File convertDocFmt(String srcPath, String descPath, int fmt) throws Exception {
  23. // 实例化ComThread线程与ActiveXComponent
  24. ComThread.InitSTA();
  25. ActiveXComponent app = new ActiveXComponent("Word.Application");
  26. try {
  27. // 文档隐藏时进行应用操作
  28. app.setProperty("Visible", new Variant(false));
  29. // 实例化模板Document对象
  30. Dispatch document = app.getProperty("Documents").toDispatch();
  31. // 打开Document进行另存为操作
  32. Dispatch doc = Dispatch.invoke(document, "Open", Dispatch.Method, new Object[] { srcPath, new Variant(true), new Variant(true) }, new int[1]).toDispatch();
  33. Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] { descPath, new Variant(fmt) }, new int[1]);
  34. Dispatch.call(doc, "Close", new Variant(false));
  35. return new File(descPath);
  36. } catch (Exception e) {
  37. throw e;
  38. } finally {
  39. // 释放线程与ActiveXComponent
  40. app.invoke("Quit", new Variant[] {});
  41. ComThread.Release();
  42. }
  43. }

以上代码需要正常运行需要 jacob 的支持

下载完成之后,需要将压缩包中的 jar 文件拷贝到项目中,将 dll 文件拷贝到 C:/windows/system32 下(只能放86的 dll),或者拷贝到当前项目运行的 jdk 的目录下的 jre/bin 目录下

如上图所示,小编的这个项目是用的 jdk7,所以要放到下图所示

放到 jdk/jre/bin 目录下时,需要注意自己电脑是多少位的,放置对应的 dll 文件。

小编为了省事就都放了,这样也不会因为没有找到合适位数的 dll 文件导致程序无法运行了!

以上内容如有问题,还请大神多多指教!!

版权声明:本文为chbyiming-bky原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/chbyiming-bky/articles/8611703.html