Java中使用Jacob另存为Word、Excel的代码示例

2019-02-12 17:54 阅读 1,268 次 评论 0 条
import java.util.Random;  
  
import com.jacob.activeX.ActiveXComponent;  
import com.jacob.com.ComThread;  
import com.jacob.com.Dispatch;  
import com.jacob.com.Variant;  
  
public class JacobUtil {  
      
    public static final int WORD_HTML = 8;  
    public static final int WORD_TXT = 7;  
    public static final int EXCEL_HTML = 44;  
    public static final int EXCEL_XML = 46;  
    public static final int EXCEL_43 = 43;  // Excel 2003 测试可用   
  
    /** 
     * WORD转HTML 
     *  
     * @param docfile 
     *            WORD文件全路径 
     * @param htmlfile 
     *            转换后HTML存放路径 
     */  
    public static void wordToHtml(String docfile, String htmlfile) {  
        // 初始化  
        ComThread.InitSTA();  
        ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word  
        try {  
            app.setProperty("Visible", new Variant(false));  
            Dispatch docs = app.getProperty("Documents").toDispatch();  
            Dispatch doc = Dispatch.invoke(  
                    docs,  
                    "Open",  
                    Dispatch.Method,  
                    new Object[] { docfile, new Variant(false),  
                            new Variant(true) }, new int[1]).toDispatch();  
            Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {  
                    htmlfile, new Variant(WORD_HTML) }, new int[1]);  
            Variant f = new Variant(false);  
            Dispatch.call(doc, "Close", f);  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            app.invoke("Quit", new Variant[] {});  
            ComThread.Release();  
        }  
    }  
  
    /** 
     * EXCEL转HTML 
     *  
     * @param xlsfile 
     *            EXCEL文件全路径 
     * @param htmlfile 
     *            转换后HTML存放路径 
     */  
    public static void excelToHtml(String xlsfile, String htmlfile) {  
        // 初始化  
        ComThread.InitSTA();  
        ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动Excel  
        try {  
            app.setProperty("Visible", new Variant(false));  
            Dispatch excels = app.getProperty("Workbooks").toDispatch();  
            Dispatch excel = Dispatch.invoke(  
                    excels,  
                    "Open",  
                    Dispatch.Method,  
                    new Object[] { xlsfile, new Variant(false),  
                            new Variant(true) }, new int[1]).toDispatch();  
            Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[] {  
                    htmlfile, new Variant(EXCEL_HTML) }, new int[1]);  
            Dispatch.call(excel, "Close", new Variant(false));  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            app.invoke("Quit", new Variant[] {});  
            ComThread.Release();  
        }  
    }  
      
    /** 
     * EXCEL转XML 
     *  
     * @param xlsfile 
     *            EXCEL文件全路径 
     * @param xmlfile 
     *            转换后XML存放路径 
     */  
    public static void excelToXml(String xlsfile, String xmlfile) {  
        // 初始化  
        ComThread.InitSTA();  
        ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动Excel  
        try {  
            app.setProperty("Visible", new Variant(false));  
            Dispatch excels = app.getProperty("Workbooks").toDispatch();  
            Dispatch excel = Dispatch.invoke(  
                    excels,  
                    "Open",  
                    Dispatch.Method,  
                    new Object[] { xlsfile, new Variant(false),  
                            new Variant(true) }, new int[1]).toDispatch();  
            Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[] {  
                    xmlfile, new Variant(EXCEL_XML) }, new int[1]);  
            Variant f = new Variant(false);  
            Dispatch.call(excel, "Close", f);  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            app.invoke("Quit", new Variant[] {});  
            ComThread.Release();  
        }  
    }  
      
    public static void main(String[] args) {  
        excelToHtml(  
                "E:\\test.xls",  
                "E:\\" + new Random().nextInt(1000) + ".html");  
    }  
  
}  

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:Java中使用Jacob另存为Word、Excel的代码示例 | 雨晨博客
分类:JAVA, 程序笔记 标签:,

发表评论


表情