我实在没办法 JAVA操作OPENOFFICE 在线等 谁给个JAVA操作OPENOFFICE的例子, 麻烦把JAR包也提供下下载地址 或者发到[email protected]要JAVA操作OPENOFFICE读WORD文件 和另存文件. 急 急在线等. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.chinaunix.net/jh/26/352548.html 我SDK....官方网 半小时才 1% 还有API哪下? 终于解决了 使用 java 操作 openoffice 实现格式转换 辛苦了几天。 不敢独享成果首先,要安装 openoffice (废话- -)创建JAVA项目的时候 需要至少以下4个包 juh.jar,jurt.jar,ridl.jar,unoil.jar以下是路径..\OpenOffice.org 2.3\program\classes我只实现了我要的功能,就是把一种文件格式转成另一种package testh;import java.io.*;import com.sun.star.uno.UnoRuntime;public class testcls { public static void readdoc(String paths, String savepaths) { File d = new File(paths); //取得当前文件夹下所有文件和目录的列表 File lists[] = d.listFiles(); String pathss = new String(""); //对当前目录下面所有文件进行检索 for(int i = 0; i < lists.length; i ++) { if(lists[i].isFile()) { String filename = lists[i].getName(); String filetype = new String(""); //取得文件类型 filetype = filename.substring((filename.length() - 3), filename.length()); //判断是否为doc文件 if(filetype.equals("doc")) { System.out.println("当前正在检索...."); //打印当前目录路径 System.out.println(paths); //打印doc文件名 String fname=filename.substring(0, (filename.length() - 4)); System.out.println("检索到文件"+fname); try { //指定文件路径和名称 String path = savepaths+fname+".html"; File outfilename = new File(path); /** *//** * 检查文件是否存在. * @throws IOException * */ if (!outfilename.exists()) { System.err.println("目标路径无同名文件,开始转换"); System.out.print("正在转换文件:"+fname); Dump(paths,fname,savepaths); } else { System.out.print("文件已存在,放弃创建,请处理存在文件后再运行...\n"); continue; } RandomAccessFile mm = null; } catch(Exception e) { e.printStackTrace(); } } } } } public static void Dump(String FilePath,String FileName,String OutPath) { com.sun.star.uno.XComponentContext xContext = null; try { // get the remote office component context xContext = com.sun.star.comp.helper.Bootstrap.bootstrap(); System.out.println("Connected to a running office ..."); // get the remote office service manager com.sun.star.lang.XMultiComponentFactory xMCF = xContext.getServiceManager(); Object oDesktop = xMCF.createInstanceWithContext( "com.sun.star.frame.Desktop", xContext); com.sun.star.frame.XComponentLoader xCompLoader = (com.sun.star.frame.XComponentLoader) UnoRuntime.queryInterface( com.sun.star.frame.XComponentLoader.class, oDesktop); java.io.File sourceFile = new java.io.File(FilePath+FileName+".doc");//读取的文件 StringBuffer sLoadUrl = new StringBuffer("file:///"); sLoadUrl.append(sourceFile.getCanonicalPath().replace('\\', '/')); sourceFile = new java.io.File(OutPath+FileName+".html");//输出的文件 System.out.print(OutPath+" "+FileName); StringBuffer sSaveUrl = new StringBuffer("file:///"); sSaveUrl.append(sourceFile.getCanonicalPath().replace('\\', '/')); com.sun.star.beans.PropertyValue[] propertyValue = new com.sun.star.beans.PropertyValue[1]; propertyValue[0] = new com.sun.star.beans.PropertyValue(); propertyValue[0].Name = "Hidden"; propertyValue[0].Value = new Boolean(true); Object oDocToStore = xCompLoader.loadComponentFromURL( sLoadUrl.toString(), "_blank", 0, propertyValue ); com.sun.star.frame.XStorable xStorable = (com.sun.star.frame.XStorable)UnoRuntime.queryInterface( com.sun.star.frame.XStorable.class, oDocToStore ); propertyValue = new com.sun.star.beans.PropertyValue[ 2 ]; propertyValue[0] = new com.sun.star.beans.PropertyValue(); propertyValue[0].Name = "Overwrite"; propertyValue[0].Value = new Boolean(true); propertyValue[1] = new com.sun.star.beans.PropertyValue(); propertyValue[1].Name = "FilterName"; propertyValue[1].Value = "HTML (StarWriter)";//你一定发现了,把这里改成其他参数,可以保存为不同的文件 MS Word 97,writer_pdf_Export xStorable.storeAsURL( sSaveUrl.toString(), propertyValue ); System.out.println("\nDocument \"" + sLoadUrl + "\" saved under \"" + sSaveUrl + "\"\n"); com.sun.star.util.XCloseable xCloseable = (com.sun.star.util.XCloseable) UnoRuntime.queryInterface(com.sun.star.util.XCloseable.class, oDocToStore ); if (xCloseable != null ) { xCloseable.close(false); } else { com.sun.star.lang.XComponent xComp = (com.sun.star.lang.XComponent) UnoRuntime.queryInterface( com.sun.star.lang.XComponent.class, oDocToStore ); xComp.dispose(); } System.out.println("document closed!"); } catch( Exception e ) { e.printStackTrace(System.err); System.exit(1); } } public static void main(String args[]) throws Exception { String paths = new String("c:\\a\\"); String savepaths = new String ("f:\\"); readdoc(paths,savepaths); } }代码附上以上代码实现了,把一个目录下的所有 doc文件转成 html当然,格式请尽量简单, openoffice 毕竟不是 MS 的产品如果你想要对文件进行操作的例子..\OpenOffice.org_2.3_SDK\examples\java\DocumentHandling 免得有人说我不厚道。 把最后一个问题也解决了吧。 就是在处理中文的时候 生成的HTML里 的中文字符是经过 ENCODE 都变成了 %25%45 之类if (fname.getBytes().length != fname.length()) { System.out.println("含有中文字符,开始对图片进行一致..."); BufferedReader bufread; String readStr =""; String read; FileReader fileread; try { fileread = new FileReader(path); bufread = new BufferedReader(fileread); try { while ((read = bufread.readLine()) != null) { readStr = readStr + read+ "\r\n"; } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); flag=false; } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); flag=false; } int Strw=1; int Jtrw=0; String t=""; Strw=readStr.indexOf("<IMG SRC=",Strw+1); Jtrw=readStr.indexOf("_html_",Jtrw+1); t=readStr.substring(Strw+10,Jtrw); t=t+"_html"; readStr=readStr.replace(t,fname+"_html"); FileOutputStream fos = new FileOutputStream(path,false); PrintWriter pw = new PrintWriter(fos); pw.write(readStr.toString().toCharArray()); pw.flush(); pw.close(); }这段代码放到 调用 Dump 方法后 楼主虽然结贴了。不过小弟还是有个问题的。我转成了html后,为什么html文档中的中文全是乱码。(linux)环境下我在win下就没有这个现象。 上面一个乱码问题小弟万分紧急,请楼主帮忙。还有PropertyValue这个类貌似有很多枚举参数。有没有这个类的属性设置的别表,分别表示什么意思。对这些api不熟悉。不明白其起到的作用。 跪求java程序转成EXE文件的方法? 请教一个返回数据的问题 aix jdk安装问题,急!!! 我要疯了,CVS老是登陆不上 50分求答案,在线急等,JAVA中如何将字符串转换为二进制码 提问,我编写的Applet问题 请教一个JDBC的问题。 applet不能用appletviewer运行,(jbuilder7下),为什么??小虫大呼救命!!! 帮忙看一下程序,关于串口操作的(急!!!在线等待) java工具中哪种最好 swt中的table如何连接数据库 新手学java
官方网 半小时才 1%
还有API哪下?
使用 java 操作 openoffice 实现格式转换 辛苦了几天。 不敢独享成果首先,要安装 openoffice (废话- -)
创建JAVA项目的时候 需要至少以下4个包 juh.jar,jurt.jar,ridl.jar,unoil.jar
以下是路径
..\OpenOffice.org 2.3\program\classes
我只实现了我要的功能,就是把一种文件格式转成另一种package testh;import java.io.*;
import com.sun.star.uno.UnoRuntime;public class testcls { public static void readdoc(String paths, String savepaths)
{
File d = new File(paths);
//取得当前文件夹下所有文件和目录的列表
File lists[] = d.listFiles();
String pathss = new String(""); //对当前目录下面所有文件进行检索
for(int i = 0; i < lists.length; i ++)
{
if(lists[i].isFile())
{
String filename = lists[i].getName();
String filetype = new String("");
//取得文件类型
filetype = filename.substring((filename.length() - 3), filename.length());
//判断是否为doc文件
if(filetype.equals("doc"))
{
System.out.println("当前正在检索....");
//打印当前目录路径
System.out.println(paths);
//打印doc文件名
String fname=filename.substring(0, (filename.length() - 4));
System.out.println("检索到文件"+fname);
try
{
//指定文件路径和名称
String path = savepaths+fname+".html";
File outfilename = new File(path);
/** *//**
* 检查文件是否存在.
* @throws IOException
*
*/
if (!outfilename.exists()) {
System.err.println("目标路径无同名文件,开始转换");
System.out.print("正在转换文件:"+fname);
Dump(paths,fname,savepaths);
}
else
{
System.out.print("文件已存在,放弃创建,请处理存在文件后再运行...\n");
continue;
}
RandomAccessFile mm = null;
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}
}
public static void Dump(String FilePath,String FileName,String OutPath)
{
com.sun.star.uno.XComponentContext xContext = null; try {
// get the remote office component context
xContext = com.sun.star.comp.helper.Bootstrap.bootstrap();
System.out.println("Connected to a running office ..."); // get the remote office service manager
com.sun.star.lang.XMultiComponentFactory xMCF =
xContext.getServiceManager();
Object oDesktop = xMCF.createInstanceWithContext(
"com.sun.star.frame.Desktop", xContext);
com.sun.star.frame.XComponentLoader xCompLoader =
(com.sun.star.frame.XComponentLoader)
UnoRuntime.queryInterface(
com.sun.star.frame.XComponentLoader.class, oDesktop); java.io.File sourceFile = new java.io.File(FilePath+FileName+".doc");//读取的文件
StringBuffer sLoadUrl = new StringBuffer("file:///");
sLoadUrl.append(sourceFile.getCanonicalPath().replace('\\', '/'));
sourceFile = new java.io.File(OutPath+FileName+".html");//输出的文件
System.out.print(OutPath+" "+FileName);
StringBuffer sSaveUrl = new StringBuffer("file:///");
sSaveUrl.append(sourceFile.getCanonicalPath().replace('\\', '/')); com.sun.star.beans.PropertyValue[] propertyValue =
new com.sun.star.beans.PropertyValue[1];
propertyValue[0] = new com.sun.star.beans.PropertyValue();
propertyValue[0].Name = "Hidden";
propertyValue[0].Value = new Boolean(true);
Object oDocToStore = xCompLoader.loadComponentFromURL(
sLoadUrl.toString(), "_blank", 0, propertyValue );
com.sun.star.frame.XStorable xStorable =
(com.sun.star.frame.XStorable)UnoRuntime.queryInterface(
com.sun.star.frame.XStorable.class, oDocToStore ); propertyValue = new com.sun.star.beans.PropertyValue[ 2 ];
propertyValue[0] = new com.sun.star.beans.PropertyValue();
propertyValue[0].Name = "Overwrite";
propertyValue[0].Value = new Boolean(true);
propertyValue[1] = new com.sun.star.beans.PropertyValue();
propertyValue[1].Name = "FilterName";
propertyValue[1].Value = "HTML (StarWriter)";//你一定发现了,把这里改成其他参数,可以保存为不同的文件 MS Word 97,writer_pdf_Export
xStorable.storeAsURL( sSaveUrl.toString(), propertyValue ); System.out.println("\nDocument \"" + sLoadUrl + "\" saved under \"" +
sSaveUrl + "\"\n");
com.sun.star.util.XCloseable xCloseable = (com.sun.star.util.XCloseable)
UnoRuntime.queryInterface(com.sun.star.util.XCloseable.class,
oDocToStore ); if (xCloseable != null ) {
xCloseable.close(false);
} else
{
com.sun.star.lang.XComponent xComp = (com.sun.star.lang.XComponent)
UnoRuntime.queryInterface(
com.sun.star.lang.XComponent.class, oDocToStore );
xComp.dispose();
}
System.out.println("document closed!");
}
catch( Exception e ) {
e.printStackTrace(System.err);
System.exit(1);
}
}
public static void main(String args[]) throws Exception
{
String paths = new String("c:\\a\\");
String savepaths = new String ("f:\\");
readdoc(paths,savepaths);
}
}
代码附上
以上代码实现了,把一个目录下的所有 doc文件转成 html
当然,格式请尽量简单, openoffice 毕竟不是 MS 的产品
如果你想要对文件进行操作的例子
..\OpenOffice.org_2.3_SDK\examples\java\DocumentHandling
就是在处理中文的时候 生成的HTML里 的中文字符是经过 ENCODE 都变成了 %25%45 之类if (fname.getBytes().length != fname.length()) {
System.out.println("含有中文字符,开始对图片进行一致...");
BufferedReader bufread;
String readStr ="";
String read;
FileReader fileread;
try {
fileread = new FileReader(path);
bufread = new BufferedReader(fileread);
try {
while ((read = bufread.readLine()) != null) {
readStr = readStr + read+ "\r\n";
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
flag=false;
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
flag=false;
} int Strw=1;
int Jtrw=0;
String t="";
Strw=readStr.indexOf("<IMG SRC=",Strw+1);
Jtrw=readStr.indexOf("_html_",Jtrw+1);
t=readStr.substring(Strw+10,Jtrw);
t=t+"_html";
readStr=readStr.replace(t,fname+"_html");
FileOutputStream fos = new FileOutputStream(path,false);
PrintWriter pw = new PrintWriter(fos);
pw.write(readStr.toString().toCharArray()); pw.flush();
pw.close();
}
这段代码放到 调用 Dump 方法后
我转成了html后,为什么html文档中的中文全是乱码。(linux)环境下
我在win下就没有这个现象。
还有
PropertyValue这个类貌似有很多枚举参数。
有没有这个类的属性设置的别表,分别表示什么意思。
对这些api不熟悉。
不明白其起到的作用。