java doc转docx

下载依赖的jar包,将包添加到工程目录下的resources/lib/中

链接: https://pan.baidu.com/s/15kwoT2eeTGVjNcvZRdccpw?pwd=rcg1 
提取码: rcg1 

在pom.xml添加依赖

        <!--添加本地的jacob.jar包-->
        <dependency>
            <groupId>com.jacob</groupId>
            <artifactId>jacob</artifactId>
            <version>1.19</version>
            <scope>system</scope>
            <systemPath>${basedir}/src/main/resources/lib/jacob.jar</systemPath>
        </dependency>

java文件

     /**
     * 根据格式类型转换doc文件
     *
     * @param srcPath  doc path 源文件
     * @param descPath the docx path 目标文件
     * @param fmt      fmt 所转格式
     * @return the file
     * @throws Exception the exception
     */
    public File convertDocFmt(String srcPath, String descPath, int fmt) throws Exception {
        long start = System.currentTimeMillis();       
        fmt=12;
        // 实例化ComThread线程与ActiveXComponent
        ComThread.InitSTA();
        ActiveXComponent app = new ActiveXComponent("Word.Application");
        try {
            // 文档隐藏时进行应用操作
            app.setProperty("Visible", new Variant(false));
            app.setProperty("DisplayAlerts", new Variant(false));
            // 实例化模板Document对象
            Dispatch document = app.getProperty("Documents").toDispatch();
            // 打开Document进行另存为操作
            Dispatch doc = Dispatch.invoke(document, "Open", Dispatch.Method,
                    new Object[]{srcPath, new Variant(true), new Variant(true)}, new int[1]).toDispatch();

            Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[]{descPath, new Variant(fmt)}, new int[1]);
            Dispatch.call(doc, "Close", new Variant(false));
            return new File(descPath);
        } catch (Exception e){
            throw e;
        } finally {
            long end = System.currentTimeMillis();
            System.out.println("转换完成,用时:"+ (end - start) +"ms");
            // 释放线程与ActiveXComponent
            app.invoke("Quit", new Variant[]{});
            ComThread.Release();
        }
    }

如果要转换成其他格式,只需要修改代码中的fmt值就可以,对应值如下。

 格式大全:前缀对应以下方法的fmt值
 0:Microsoft Word 97 - 2003 文档 (.doc)
 1:Microsoft Word 97 - 2003 模板 (.dot)
 2:文本文档 (.txt)
 3:文本文档 (.txt)
 4:文本文档 (.txt)
 5:文本文档 (.txt)
 6:RTF 格式 (.rtf)
 7:文本文档 (.txt)
 8:HTML 文档 (.htm)(带文件夹)
 9:MHTML 文档 (.mht)(单文件)
 10:MHTML 文档 (.mht)(单文件)
 11:XML 文档 (.xml)
 12:Microsoft Word 文档 (.docx)
 13:Microsoft Word 启用宏的文档 (.docm)
 14:Microsoft Word 模板 (.dotx)
 15:Microsoft Word 启用宏的模板 (.dotm)
 16:Microsoft Word 文档 (.docx)
 17:PDF 文件 (.pdf)
 18:XPS 文档 (.xps)
 19:XML 文档 (.xml)
 20:XML 文档 (.xml)
 21:XML 文档 (.xml)
 22:XML 文档 (.xml)
 23:OpenDocument 文本 (.odt)
 24:WTF 文件 (.wtf)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容