java用jacob批量word转xml

本文介绍了一种使用Java批量将Word文档(.doc)转换成XML格式的方法。通过调用ActiveX组件启动Word应用程序并利用VBA接口进行文档转换,同时实现了文件的复制和保存。此外还提供了一个用于获取文件夹内所有文件的递归方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

try {

ArrayList<File> files =FileUtil.getListFiles("F:\\XXX");//xxx文件夹

for (File file : files) {

try {

ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word
String inFile = file.getAbsolutePath(); // 指定要打开的word文件
File fileCopy=createFiles(file);//拷贝到另一个文件夹里面
String path=fileCopy+"/"+FileUtil.getFileNameNoEx(file.getName())+".xml";

app.setProperty("Visible", new Variant(false)); // 为false时设置word不可见,为true时是可见要不然看不到Word打开文件的過程
Dispatch docs = app.getProperty("Documents").toDispatch();
// 打开編輯器
Dispatch doc = Dispatch.invoke(
docs,
"Open",
Dispatch.Method,
new Object[] { inFile, new Variant(false),
new Variant(true) }, new int[1]).toDispatch(); // 打开word文档

Dispatch.call(doc, "SaveAs", path, 11);// xml文件格式宏11
Dispatch.call(doc, "Close", false);
app.invoke("Quit", 0);
System.out.println(file.getName()+"OK...");
} catch (Exception e) {
//-错误的doc文件 
continue;

}

public static File createFiles(File file) {
File fileP = new File("D:\\2月10日-word转Xml"+ FileUtil.subString(file.getParent()));
// 如果文件不存在则创建
if (!fileP.exists() && !fileP.isDirectory()) {
try {
fileP.mkdirs();
} catch (Exception e) {
e.printStackTrace();
}
}
return fileP;
}

FileUtil方法

// 获取文件
public static ArrayList<File> getListFiles(Object obj) {
File directory = null;
if (obj instanceof File) {
directory = (File) obj;
} else {
directory = new File(obj.toString());
}
ArrayList<File> files = new ArrayList<File>();
if (directory.isFile()) {
files.add(directory);
return files;
} else if (directory.isDirectory()) {
File[] fileArr = directory.listFiles();
for (int i = 0; i < fileArr.length; i++) {
File fileOne = fileArr[i];
files.addAll(getListFiles(fileOne));
}
}
return files;
}

/*
* Java文件操作 获取不带扩展名的文件名
*/
public static String getFileNameNoEx(String filename) { 
       if ((filename != null) && (filename.length() > 0)) { 
           int dot = filename.lastIndexOf('.'); 
           if ((dot >-1) && (dot < (filename.length()))) { 
               return filename.substring(0, dot); 
           } 
       } 
       return filename; 
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值