关于.docx 转.doc

发布于 2021-11-19 02:14:59 字数 109 浏览 793 评论 6

您好,

     把docx格式转成doc,请问poi有这方面的接口吗? aspose.words有,但那是要付费的。或是您知道其他方式可以做到吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

离去的眼神 2021-11-25 12:30:23

能直接来谁用代码啊。。。你来oschina看风景的么

挽清梦 2021-11-25 12:30:07

为什么要用代码啊?不可以


Word reader
打开之后“文件另存为.docx格式”的吗?

哑剧 2021-11-25 12:20:16

good!!!

醉酒的小男人 2021-11-23 23:30:31

新人问一下,哭脸是什么意思?

霞映澄塘 2021-11-23 07:44:25
package com.cdlr.word.jacob;

import java.io.File;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

public class Convertion {

	private ActiveXComponent objWord;
	private Dispatch document;

	private Dispatch wordObject;

	public void open(String filename) {
		ComThread.InitSTA();
		// 实例化 objWord
		objWord = new ActiveXComponent("Word.Application");

		// 将本地word对象赋到 wordObject上
		wordObject = objWord.getObject();

		// 使 word 为"可见",主要是方便调试。正式应用时,把true改为false
		Dispatch.put(wordObject, "Visible", new Variant(false));

		// 获得Documents对象
		Dispatch documents = objWord.getProperty("Documents").toDispatch();

		// 调用 Open 打开 Document
		document = Dispatch.call(documents, "Open", filename).toDispatch();

		Dispatch.call(document, "SaveAs", "e:\abc.doc",
				"wdFormatDocumentDefault");
		ComThread.Release();// Thread release

	}

	public static void main(String[] args) {
		Convertion t1 = new Convertion();

		try {
			t1.convertDocx2Doc("e:\五千万.docx", "e:\五千万.doc");
		} catch (Exception e) {
			// t1.close();
			System.err.println(e.getMessage());
			e.printStackTrace();
		}
	}

	public void close() {
		// 关闭文档
		// 由于是演示程序,这里只简单的把word退出即可
		Dispatch.call(document, "Close");
		Dispatch.call(wordObject, "quit");
	}

	/**
	 * 转换doc文件为docx文件
	 * 
	 * @param docPath
	 *            doc源文件路径
	 * @param docxPath
	 *            docx目标文件路径
	 * @return 目标docx文件
	 * @throws Exception
	 */
	private File convertDocx2Doc(String docPath, String docxPath)
			throws Exception {
		ComThread.InitSTA();
		ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word
		try {
			// Set component to hide that is opened
			app.setProperty("Visible", new Variant(false));
			// Instantiate the Documents Property
			Dispatch docs = app.getProperty("Documents").toDispatch();
			// Open a word document
			Dispatch doc = Dispatch.invoke(
					docs,
					"Open",
					Dispatch.Method,
					new Object[] { docPath, new Variant(true),
							new Variant(true) }, new int[1]).toDispatch();
			Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
					docxPath},
					new int[1]);
			Dispatch.call(doc, "Close", new Variant(false));
			return new File(docxPath);
		} catch (Exception e) {
			throw e;
		} finally {
			app.invoke("Quit", new Variant[] {});// ActiveXComponent quit
			ComThread.Release();// Thread release
		}

	}

}
   
最后后缀虽然变了,但是格式没变。2003的话,还是打不开。请高手不吝赐教啊。
一人独醉 2021-11-21 16:30:40

都是直接“另存为...”

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文