RT,如何用java写一个程序验证word文档是否满足某种格式,比如标题是哪种字体,大小

解决方案 »

  1.   

    使用jacob:只能是windows系统使用,    下载zip包,解压,得到一个jar和一个dll,jar导入到项目,dll放到C:\WINDOWS\system32目录下      import com.jacob.activeX.ActiveXComponent;
        import com.jacob.com.Dispatch;
        import com.jacob.com.Variant;
        public class TestWord{
            public static void main(String[] args){
                System.out.println(ChageFormat("c:\\","test.doc"));
        }
        public static boolean ChageFormat (String FolderPath,String FileName){
            
                String FileFormat = "";
                System.out.println(FolderPath);
                FileFormat = FileName.substring(FileName.length()-4,FileName.length());
                System.out.println(FileFormat);
                
                if(FileFormat.equalsIgnoreCase(".doc"))
                {
                    String DocFile = FolderPath +"\\"+ FileName;
                    System.out.println("word文件路径:"+DocFile);
                    //word文件的完整路径
                    String HtmlFile = DocFile.substring(0, (DocFile.length() - 4)) + ".txt";//要是用htm的,把这里改成.htm
                    System.out.println("htm文件路径:"+HtmlFile);
                    //html文件的完整路径
                    ActiveXComponent app = new ActiveXComponent("Word.Application");
                    //启动word
                    try
                    {
                        app.setProperty("Visible", new Variant(false));
                        //设置word程序非可视化运行
                        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(); 
                        //打开word文件
                        Dispatch.invoke(doc,"SaveAs",Dispatch.Method, new Object[]{HtmlFile,new Variant(7)}, new int[1]);//需奥生成htm的话,改成 new Variant(8),把上面的.txt,改成.htm
                        //作为htm格式保存文件
                        Dispatch.call(doc, "Close",new Variant(false));
                        //关闭文件
                    }
                    catch (Exception e)
                    {
                        e.printStackTrace();
                    }
                    finally
                    {
                        app.invoke("Quit", new Variant[] {});
                        //退出word程序
                    }
                    //转化完毕
                    return true;
                }
                return false;
            }
         }
      

  2.   

    二楼的正解,但是你的DLL文件得注册