首页>代码>java开源在线考试系统源码>/j2ee在线考试系统/examOnline-master/JACOB/src/com/test/T.java
package com.test;

import java.io.*;

import org.dom4j.*;
import org.dom4j.io.*;

import com.jacob.activeX.*;
import com.jacob.com.*;


public class T {   
	public T(){
		
	}
	
	Paragraph  []paragraph;
	ActiveXComponent app = new ActiveXComponent( "Word.Application"); //啟動word
	  
	public void saveXMLto(String str){
		OutputFormat format = OutputFormat.createPrettyPrint();
		format.setEncoding("gbk");
		try {
			XMLWriter writer =new XMLWriter(new FileWriter(new File("12.xml")),format);
		//	 XMLWriter writer = new XMLWriter( new FileWriter( "output.xml" ));
			writer.write(this.createXMLDocument());
			writer.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	
	
	
	public Document createXMLDocument(){
		Document doc=null;
		doc=DocumentHelper.createDocument();
		doc.setXMLEncoding("gb2312");
		T t=new T();
		t.readWord();
		Element root=doc.addElement("Article");//创建根节点
		for(int i=0;i<t.readWord().length;i++){
			Element Paragraph=root.addElement("Paragraph");
			Character []C=new Character[t.readWord()[i].characters.length];
			C=t.readWord()[i].characters;
			Character []S=new Character[t.readWord()[i].characters.length];
			S=C;
			int k=0,count=0;
			for(int j=1;j<C.length;j++){
				if(S[k].compare(C[j])==true){
					S[count].text+=C[j].text;
					S[count].color=C[j].color;
					S[count].lable=C[j].lable;
					S[count].name=C[j].name;
					S[count].size=C[j].size;
					System.out.println(S[j-1].lable+" "+C[j].lable);
				
				}else{
					Element Font=Paragraph.addElement("Font");
					Font.setText(S[count].text);
					Font.addAttribute("Size", S[count].size);
					Font.addAttribute("Color", S[count].color); 
					Font.addAttribute("Name", S[count].name);
					k=j;
					j--;
					count++;
					S[count].text="";
				}
			
		}
		}
		OutputFormat format = OutputFormat.createPrettyPrint();
		format.setEncoding("gb2312");
		try {
			XMLWriter writer =new XMLWriter(new FileWriter(new File("c:\\12.xml")),format);
		//	 XMLWriter writer = new XMLWriter( new FileWriter( "output.xml" ));
			writer.write(doc);
			writer.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return doc;
		
		
	}
	public static void main(String args[]){
		T t=new T();
	//	t.readWord();
		t.createXMLDocument();
	}
	
	
		public Paragraph [] readWord(){
		   try {
			 
		       String inFile = "c:\\Word.doc"; //指定要打開的word文件
		       app.setProperty("Visible", new Variant(true)); //為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文檔 
		      // int paragraphsCount=Dispatch.get(doc, "Count").toInt(); 
		   
		       Dispatch tables=Dispatch.get(doc, "Tables").toDispatch();
		       Dispatch table=Dispatch.call(tables,"Item",new Variant(1)).toDispatch();
		       Dispatch cols=Dispatch.get(table,"Columns").toDispatch();
		      
		       Dispatch rows = Dispatch.call(table, "Rows").toDispatch();
		       Dispatch tableRange=Dispatch.get(table,"Range").toDispatch();
		       Dispatch borders=Dispatch.get(tableRange,"Borders").toDispatch();
		       String borderStyle=Dispatch.get(borders,"InsideLineWidth").toString();
		       System.out.println(borderStyle+"Style");
		       
		       
		       Dispatch tableFormat=Dispatch.get(tableRange,"ParagraphFormat").toDispatch();
		       String align=Dispatch.get(tableFormat,"Alignment").toString();
		       System.out.println("align"+align);//输出表格的位置
		       
		       
		       int colCount = Dispatch.get(cols, "Count").toInt();
		       System.out.println("表格的cols为"+colCount);
		       for(int p=1;p<=colCount;p++){
		    	   Dispatch col = Dispatch.call(cols, "Item", new Variant(p)).toDispatch();  //循环出每一列
		    	   Dispatch cells=Dispatch.get(col, "Cells").toDispatch();//当前列中单元格
		    	   int cellCount = Dispatch.get(cells, "Count").toInt();// 当前列中单元格数 实际上这个数等于row  
		    	   for(int q=1;q<=cellCount;q++){
		    		   Dispatch cell = Dispatch.call(cells, "Item", new  Variant(q)).toDispatch(); //当前单元格 
		    		   Dispatch range=Dispatch.get(cell,"Range").toDispatch();
		    		   
		    		   Dispatch cellShading=Dispatch.get(range,"Shading").toDispatch();
		    		   String cellColor=Dispatch.get(cellShading,"BackgroundPatternColor").toString();
		    		   System.out.print(cellColor+"Color");//读取单元格的背景颜色
		    		   String cellText=Dispatch.get(range, "Text").toString();
		    		   
		    		   cellText=cellText.substring(0,cellText.length()-1);
		    		   String height=Dispatch.get(cell,"Width").toString();
		   
		    		//   Dispatch shading=Dispatch.get(cell,"Shading").toDispatch();
		    		   
		    		   
		    		   
		    		//   System.out.println("当前列中的值为:");
		    		   
		    	   }
		       }
		       
		       
		       
		       Dispatch wordContent = Dispatch.get(doc, "Content").toDispatch(); // 取得word文件的内容
		       Dispatch paragraphs = Dispatch.get(wordContent, "Paragraphs").toDispatch(); // 所有段落
		       int paragraphCount = Dispatch.get(paragraphs, "Count").toInt(); // 一共的段落数
		       paragraph=new Paragraph[paragraphCount];
		       for(int i=0;i<paragraphCount;i++){
		    	   Dispatch Paragraph=Dispatch.call(paragraphs,
		    			   "Item",
		    			   new Variant(i +1)).toDispatch(); //获得该段内容
		    	   Dispatch ParagraphRange =Dispatch.get(Paragraph, "Range").toDispatch();
		    	   Dispatch ParagraphFormat=Dispatch.get(ParagraphRange, "ParagraphFormat").toDispatch();
		    //	   String Align=Dispatch.get(ParagraphFormat,"Shading").toString();
		    	//   System.out.println(Align);
		    	   Dispatch chars=Dispatch.get (ParagraphRange, "Characters").toDispatch(); // 获取该段字符
		    	 
		    	   int charCount =Dispatch.get (chars, "Count").toInt(); // 取获字符个数
		    	   paragraph[i] =new Paragraph(charCount);
		    	   for(int j =0; j <paragraph[i].getCount(); j++){
		    		   paragraph[i].characters[j]=new Character();
		    		   
		    		   Dispatch chs=Dispatch.call(chars, "Item", new Variant(j +1)).toDispatch();
		    		   Dispatch font =Dispatch.get (chs, "Font").toDispatch();
		    
		    		//   Dispatch shading=Dispatch.get(chs,"Shading").toDispatch();
		    		//   paragraph[i].characters[j].BackgroundPatternColor=Dispatch.get(shading, "BackgroundPatternColor").toString();
		    		   
		    		   
		    		   
		    		   paragraph[i].characters[j].size=Dispatch.get(font, "Size").toString();
		    		   //获取字符大小
		    		   
		    		   paragraph[i].characters[j].color=Dispatch.get(font,"Color").toString();
		    		   //获取字符颜色
		    		   
		    		   paragraph[i].characters[j].name=Dispatch.get(font, "Name").toString();
		    		   //获取字符类型
		    		   
		    		   paragraph[i].characters[j].text =Dispatch.get(chs, "Text").toString();
		    		   //获取字符内容
		    		   
		    		   paragraph[i].characters[j].lable =  paragraph[i].characters[j].size+paragraph[i].characters[j].color+paragraph[i].characters[j].name;
		    		   //获取字符各属性
		    		   
		    		   
		    		//   System.out.print(paragraph[i].characters[j].BackgroundPatternColor+" ");
		    	   }
		    	   
		    	   
		    	 //  System.out.println("eee"+charCount);
		       }
		       
		       
		       
		    //   System.out.println(paragraphCount);
		   }catch (Exception e) {
		         e.printStackTrace();
		   }
		   finally {
			//   System.out.println();
		//	   app.invoke("Quit", new Variant[]{}); 
			 
		   }
		   return this.paragraph;
	
}
}
最近下载更多
1516299986  LV9 4月23日
1481421104  LV3 2024年11月14日
colecole  LV3 2024年10月8日
tibbers  LV2 2024年5月30日
_69860161  LV1 2024年5月9日
2860615178  LV4 2024年5月1日
blueus  LV1 2024年2月29日
微信网友_6878998251458560  LV1 2024年2月25日
aaaaaaa1234567  LV1 2024年2月9日
gjw19884260466  LV3 2024年1月8日
最近浏览更多
1516299986  LV9 4月23日
benben2020 3月19日
暂无贡献等级
yinxunyu12138  LV11 2024年12月29日
MaxMac  LV6 2024年12月26日
ma406805131  LV19 2024年12月24日
Daima000  LV4 2024年12月3日
alancathy 2024年11月28日
暂无贡献等级
1481421104  LV3 2024年11月14日
dongandmin  LV8 2024年11月13日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友