谁给个JAVA操作OPENOFFICE的例子,  麻烦把JAR包也提供下
下载地址  或者发到
[email protected]
要JAVA操作OPENOFFICE读WORD文件 和另存文件.
 急 急
在线等.

解决方案 »

  1.   

    http://www.chinaunix.net/jh/26/352548.html
      

  2.   

    我SDK....
    官方网  半小时才  1%
     还有API哪下?
      

  3.   

    终于解决了
     使用 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  
      

  4.   

    免得有人说我不厚道。  把最后一个问题也解决了吧。
     就是在处理中文的时候  生成的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 方法后
      

  5.   

    楼主虽然结贴了。不过小弟还是有个问题的。
    我转成了html后,为什么html文档中的中文全是乱码。(linux)环境下
    我在win下就没有这个现象。
      

  6.   

    上面一个乱码问题小弟万分紧急,请楼主帮忙。
    还有
    PropertyValue这个类貌似有很多枚举参数。
    有没有这个类的属性设置的别表,分别表示什么意思。
    对这些api不熟悉。
    不明白其起到的作用。