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
分享到:
相关推荐
转换过程中通常需要调用Word的SaveAs方法,将文档另存为PDF格式。需要注意的是,Word文档的保存过程可能涉及许多格式和选项的设置,所以实际操作时要根据具体需求编写对应的转换逻辑。 使用JSP来实现Word和Excel...
对于Excel转PDF,步骤类似,只是替换`"Word.Application"`为`"Excel.Application"`,并且可能需要调整保存参数以适应Excel文件的特性。 除了Jacob,还有其他Java库如Apache POI和iText可以用来处理这种转换,但它们...
Jacob非常适合那些需要在Java环境中操作Office文档(如Word、Excel)的应用场景。 #### 二、Jacob操作Excel基本流程 使用Jacob操作Excel主要包括以下几个步骤: 1. **初始化Excel对象**:创建Excel应用程序实例。...
标题中的“Excel、Word转PDF时,异常com.jacob.com.ComFailException: Invoke of: SaveAs”是一个关于在编程环境中转换Microsoft Office文档(如Excel和Word)为PDF格式时遇到的错误。这个错误通常与使用Jacob库进行...
在这个特定的Demo中,我们将利用Jacob调用Office工具的"另存为"功能,将HTML文档转换为Excel格式。 在开始之前,确保你已经正确安装了Jacob的库文件。在提供的压缩包中,"jacob-1.18-M2"包含了Jacob的JAR文件,你...
例如,Word中的`SaveAs`方法可以接受不同的文件格式参数,将文档另存为其他格式。转换为PDF可能需要调用`SaveAs2`方法,并传入`wdFormatPDF`作为格式参数。 5. **处理数据**:Jacob还允许读取和写入文件中的数据。...
在本例中,可能使用Jacob来调用Microsoft Office的应用程序(如Word、Excel或PowerPoint)的COM接口,实现文件格式的转换。这种方法的优点是直接利用了Office的内置转换功能,但缺点是只能在装有相应Office版本的...
jacob会模拟用户打开一个Word文档,然后调用Word的“另存为”功能,将其转换为PDF格式。这种方法的优点在于,转换过程中能够保持原始文档的样式和布局,因为转换是由Word本身处理的。 在提供的压缩包文件中,我们...
这通常涉及到调用Microsoft Word或Excel的COM接口,利用它们的自动化功能来打开文档,然后将内容导出为HTML。以下是一个简化的调用代码示例: ```java import com.jacob.activeX.ActiveXComponent; import ...
首先,Jacob会启动Office应用(如Word或Excel),然后通过COM接口控制打开指定的Office文档,并执行保存为PDF的操作。这个过程完全在后台进行,用户无需手动干预。 具体来说,以下是一般的转换步骤: 1. **初始化...
首先,需要打开Word文件,然后将其另存为PDF格式。关键的Java代码会包括以下步骤: - 加载Jacob的动态链接库(DLL)。 - 创建一个ComServer对象,初始化Word应用。 - 使用`ActiveDocument`打开Word文件。 - 调用...
6. **使用Jacob进行更复杂的转换**: 如果需要保留更复杂的格式(如页眉、页脚、页码等),可以利用Jacob启动一个后台的Microsoft Word实例,通过COM接口直接将Word文档另存为HTML。 7. **注释与文档**: 代码应包含...
这部分代码中涉及到的操作包括打开Word应用程序,设置应用程序为不可见(即后台运行),打开指定的Word文档,将文档另存为PDF格式,并最终关闭文档和Word应用程序。在此过程中,需要处理的常量包括...
通过Jacob,Java开发者可以轻松地访问Windows平台上的COM对象,这为处理Office文档(如Word和Excel)提供了一种有效途径。需要注意的是,虽然Jacob本身不直接支持文档内容的抽取,但它可以通过调用Office应用程序的...
6. XML方案:Word从2003开始支持XML格式,大致的思路是先用office2003或者2007编辑好Word的样式,然后另存为XML,将XML翻译为FreeMarker模板,最后用Java来解析FreeMarker模板并输出Doc。 生成PDF 1. Jasper ...
使用jacob,可以通过自动化的方式调用Word的“另存为HTML”功能,从而完成这个过程。不过,这种方法可能会丢失一些格式信息,因为不是所有Word特性都能完美地转化为HTML。因此,开发者可能需要额外的处理来尽可能...
通过JACOB,Java程序可以轻松地与Office应用(如Word、Excel等)进行交互。 #### 三、开发环境配置 ##### 1. 开发工具 - **MyEclipse Enterprise Workbench**: 版本为7.0 Milestone-1。 - **Apache Tomcat**: 用于...
最终用户可以浏览 Word/Excel/Ppt 文档内容,但需要禁止复制、粘贴、下载、另存的; 14.需要在html页面中在线编辑Word公文的; 15.需要在协同办公中强制保留Word修改痕迹的; 16.需要在协同办公中手写批注、手写签名...
POI读取Word文档比较适合、对于生成文档样式比较难控制,iText操作Excel还可以,对Word的操作功能有限,JACOB操作Word实现复杂,并且无法将服务部署到Linux平台,要求安装office,对于实现固定格式的报表实现困难,...