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日
最近浏览更多
wjy808015 LV2
10月30日
0312wangchen LV26
10月15日
小月月呀 LV19
7月1日
348835269 LV11
5月6日
1516299986 LV9
4月23日
benben2020
3月19日
暂无贡献等级
微信网友_7357533879193600 LV2
1月26日
yinxunyu12138 LV11
2024年12月29日
MaxMac LV6
2024年12月26日
ma406805131 LV19
2024年12月24日

