`
Jameslyy
  • 浏览: 408941 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Jacob 另存为Word、Excel

阅读更多
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");
	}

}

 

附: XlFileFormat Enumeration

 

Name Value Description

 

xlAddIn 18 Microsoft Excel 97-2003 Add-In

xlAddIn8 18 Microsoft Excel 97-2003 Add-In

xlCSV 6 CSV

xlCSVMac 22 Macintosh CSV

xlCSVMSDOS 24 MSDOS CSV

xlCSVWindows 23 Windows CSV

xlCurrentPlatformText -4158 Current Platform Text

xlDBF2 7 DBF2

xlDBF3 8 DBF3

xlDBF4 11 DBF4

xlDIF 9 DIF

xlExcel12 50 Excel12

xlExcel2 16 Excel2

xlExcel2FarEast 27 Excel2 FarEast

xlExcel3 29 Excel3

xlExcel4 33 Excel4

xlExcel4Workbook 35 Excel4 Workbook

xlExcel5 39 Excel5

xlExcel7 39 Excel7

xlExcel8 56 Excel8

xlExcel9795 43 Excel9795

xlHtml 44 HTML format

xlIntlAddIn 26 International Add-In

xlIntlMacro 25 International Macro

xlOpenDocumentSpreadsheet 60 OpenDocument Spreadsheet

xlOpenXMLAddIn 55 Open XML Add-In

xlOpenXMLTemplate 54 Open XML Template

xlOpenXMLTemplateMacroEnabled 53 Open XML Template Macro Enabled

xlOpenXMLWorkbook 51 Open XML Workbook

xlOpenXMLWorkbookMacroEnabled 52 Open XML Workbook Macro Enabled

xlSYLK 2 SYLK

xlTemplate 17 Template

xlTemplate8 17 Template 8

xlTextMac 19 Macintosh Text

xlTextMSDOS 21 MSDOS Text

xlTextPrinter 36 Printer Text

xlTextWindows 20 Windows Text

xlUnicodeText 42 Unicode Text

xlWebArchive 45 Web Archive

xlWJ2WD1 14 WJ2WD1

xlWJ3 40 WJ3

xlWJ3FJ3 41 WJ3FJ3

xlWK1 5 WK1

xlWK1ALL 31 WK1ALL

xlWK1FMT 30 WK1FMT

xlWK3 15 WK3

xlWK3FM3 32 WK3FM3

xlWK4 38 WK4

xlWKS 4 Worksheet

xlWorkbookDefault 51 Workbook default

xlWorkbookNormal -4143 Workbook normal

xlWorks2FarEast 28 Works2 FarEast

xlWQ1 34 WQ1

xlXMLSpreadsheet 46 XML Spreadsheet

分享到:
评论
3 楼 kobe7777 2015-02-08  
你好,请问我想写个excelToExcel 另存一个excel 报了如下错误,请指教
com.jacob.com.ComFailException: Invoke of: SaveAs
Source: Microsoft Office Excel
Description:

at com.jacob.com.Dispatch.invokev(Native Method)
at com.jacob.com.Dispatch.invokev(Dispatch.java:804)
at com.jacob.com.Dispatch.invoke(Dispatch.java:483)
at com.wps.test.JacobUtil.excelToExcel(JacobUtil.java:137)
at com.wps.test.JacobUtil.main(JacobUtil.java:156)
2 楼 Jameslyy 2013-11-26  
确认jacob dll是否已经放入系统路径,jacob版本不同,支持的office版本也不同!
1 楼 fireq3 2013-11-22  
你好,有excelToXml方法,可以写XmlToexcel方法吗?我照写了一下报错
com.jacob.com.ComFailException: Invoke of: SaveAs
Source: Microsoft Office Excel
Description: 类 Workbook 的 SaveAs 方法无效

相关推荐

    jacob-java调用word

    转换过程中通常需要调用Word的SaveAs方法,将文档另存为PDF格式。需要注意的是,Word文档的保存过程可能涉及许多格式和选项的设置,所以实际操作时要根据具体需求编写对应的转换逻辑。 使用JSP来实现Word和Excel...

    Java实现word、excel转pdf、html

    对于Excel转PDF,步骤类似,只是替换`"Word.Application"`为`"Excel.Application"`,并且可能需要调整保存参数以适应Excel文件的特性。 除了Jacob,还有其他Java库如Apache POI和iText可以用来处理这种转换,但它们...

    Jacob操作Excel

    Jacob非常适合那些需要在Java环境中操作Office文档(如Word、Excel)的应用场景。 #### 二、Jacob操作Excel基本流程 使用Jacob操作Excel主要包括以下几个步骤: 1. **初始化Excel对象**:创建Excel应用程序实例。...

    Excel、Word转PDF时,异常com.jacob.com.ComFailException: Invoke of: SaveAs

    标题中的“Excel、Word转PDF时,异常com.jacob.com.ComFailException: Invoke of: SaveAs”是一个关于在编程环境中转换Microsoft Office文档(如Excel和Word)为PDF格式时遇到的错误。这个错误通常与使用Jacob库进行...

    jacob-1.18 Demo, 完整运行,Html转换Excel

    在这个特定的Demo中,我们将利用Jacob调用Office工具的"另存为"功能,将HTML文档转换为Excel格式。 在开始之前,确保你已经正确安装了Jacob的库文件。在提供的压缩包中,"jacob-1.18-M2"包含了Jacob的JAR文件,你...

    jacob jar包及依赖文件

    例如,Word中的`SaveAs`方法可以接受不同的文件格式参数,将文档另存为其他格式。转换为PDF可能需要调用`SaveAs2`方法,并传入`wdFormatPDF`作为格式参数。 5. **处理数据**:Jacob还允许读取和写入文件中的数据。...

    java实现office、wps转pdf,pdf转word

    在本例中,可能使用Jacob来调用Microsoft Office的应用程序(如Word、Excel或PowerPoint)的COM接口,实现文件格式的转换。这种方法的优点是直接利用了Office的内置转换功能,但缺点是只能在装有相应Office版本的...

    使用jacob转pdf资料

    jacob会模拟用户打开一个Word文档,然后调用Word的“另存为”功能,将其转换为PDF格式。这种方法的优点在于,转换过程中能够保持原始文档的样式和布局,因为转换是由Word本身处理的。 在提供的压缩包文件中,我们...

    JACOB版本1.9及调用代码

    这通常涉及到调用Microsoft Word或Excel的COM接口,利用它们的自动化功能来打开文档,然后将内容导出为HTML。以下是一个简化的调用代码示例: ```java import com.jacob.activeX.ActiveXComponent; import ...

    jacob-1.14.3-x64 x89已验证,可以使用

    首先,Jacob会启动Office应用(如Word或Excel),然后通过COM接口控制打开指定的Office文档,并执行保存为PDF的操作。这个过程完全在后台进行,用户无需手动干预。 具体来说,以下是一般的转换步骤: 1. **初始化...

    office转pdf

    首先,需要打开Word文件,然后将其另存为PDF格式。关键的Java代码会包括以下步骤: - 加载Jacob的动态链接库(DLL)。 - 创建一个ComServer对象,初始化Word应用。 - 使用`ActiveDocument`打开Word文件。 - 调用...

    Word文档转换为Html格式(带架包)

    6. **使用Jacob进行更复杂的转换**: 如果需要保留更复杂的格式(如页眉、页脚、页码等),可以利用Jacob启动一个后台的Microsoft Word实例,通过COM接口直接将Word文档另存为HTML。 7. **注释与文档**: 代码应包含...

    java使用jacob.jar将word转pdf

    这部分代码中涉及到的操作包括打开Word应用程序,设置应用程序为不可见(即后台运行),打开指定的Word文档,将文档另存为PDF格式,并最终关闭文档和Word应用程序。在此过程中,需要处理的常量包括...

    Java抽取Word及PDF编程

    通过Jacob,Java开发者可以轻松地访问Windows平台上的COM对象,这为处理Office文档(如Word和Excel)提供了一种有效途径。需要注意的是,虽然Jacob本身不直接支持文档内容的抽取,但它可以通过调用Office应用程序的...

    JAVA动态生成word和pdf.doc

    6. XML方案:Word从2003开始支持XML格式,大致的思路是先用office2003或者2007编辑好Word的样式,然后另存为XML,将XML翻译为FreeMarker模板,最后用Java来解析FreeMarker模板并输出Doc。 生成PDF 1. Jasper ...

    java实现word的下载和生成html页面代码

    使用jacob,可以通过自动化的方式调用Word的“另存为HTML”功能,从而完成这个过程。不过,这种方法可能会丢失一些格式信息,因为不是所有Word特性都能完美地转化为HTML。因此,开发者可能需要额外的处理来尽可能...

    java深度处理word.doc

    通过JACOB,Java程序可以轻松地与Office应用(如Word、Excel等)进行交互。 #### 三、开发环境配置 ##### 1. 开发工具 - **MyEclipse Enterprise Workbench**: 版本为7.0 Milestone-1。 - **Apache Tomcat**: 用于...

    soaoffice示例代码

    最终用户可以浏览 Word/Excel/Ppt 文档内容,但需要禁止复制、粘贴、下载、另存的; 14.需要在html页面中在线编辑Word公文的; 15.需要在协同办公中强制保留Word修改痕迹的; 16.需要在协同办公中手写批注、手写签名...

    freemarker生成复杂word

    POI读取Word文档比较适合、对于生成文档样式比较难控制,iText操作Excel还可以,对Word的操作功能有限,JACOB操作Word实现复杂,并且无法将服务部署到Linux平台,要求安装office,对于实现固定格式的报表实现困难,...

Global site tag (gtag.js) - Google Analytics