java导出word.docx
- 文档编号:30037589
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:30
- 大小:23.96KB
java导出word.docx
《java导出word.docx》由会员分享,可在线阅读,更多相关《java导出word.docx(30页珍藏版)》请在冰豆网上搜索。
java导出word
javajacob操作word文档,进行写操作,如生成表格,添加图片
jacob-1.15-M3.zip
jacob-1.15-M3-x86.dllcopy到c:
\\windows\system32
引入jacob.jar
示例代码
importjava.io.File;
importcom.jacob.activeX.ActiveXComponent;
import.Dispatch;
import.Variant;
classWordBean{
//代表一个word程序
privateActiveXComponentMsWordApp=null;
//代表进行处理的word文档
privateDispatchdocument=null;
publicWordBean(){
//OpenWordifwe\'venotdoneitalready
if(MsWordApp==null){
MsWordApp=newActiveXComponent("Word.Application");
}
}
//设置是否在前台打开word程序,
publicvoidsetVisible(booleanvisible){
MsWordApp.setProperty("Visible",newVariant(visible));
//这一句作用相同
//Dispatch.put(MsWordApp,"Visible",newVariant(visible));
}
//创建一个新文档
publicvoidcreateNewDocument(){
//FindtheDocumentscollectionobjectmaintainedbyWord
//documents表示word的所有文档窗口,(word是多文档应用程序)
Dispatchdocuments=Dispatch.get(MsWordApp,"Documents").toDispatch();
//CalltheAddmethodoftheDocumentscollectiontocreate
//anewdocumenttoedit
document=Dispatch.call(documents,"Add").toDispatch();
}
//打开一个存在的word文档,并用document引用引用它
publicvoidopenFile(StringwordFilePath){
//FindtheDocumentscollectionobjectmaintainedbyWord
//documents表示word的所有文档窗口,(word是多文档应用程序)
Dispatchdocuments=Dispatch.get(MsWordApp,"Documents").toDispatch();
document=Dispatch.call(documents,"Open",wordFilePath,
newVariant(true)/*是否进行转换ConfirmConversions*/,
newVariant(false)/*是否只读*/).toDispatch();
//document=Dispatch.invoke(documents,"Open",Dispatch.Method,
//newObject[]{wordFilePath,newVariant(true),
//newVariant(false)
//},newint[1]).toDispatch();
}
//向document中插入文本内容
publicvoidinsertText(StringtextToInsert){
//GetthecurrentselectionwithinWordatthemoment.
//anewdocumenthasjustbeencreatedthenthiswillbeat
//thetopofthenewdoc获得选中的内容,如果是一个新创建的文件,因里面无内容,则光标应处于文件开头处
Dispatchselection=Dispatch.get(MsWordApp,"Selection").toDispatch();
//取消选中,应该就是移动光标,否则新添加的内容会覆盖选中的内容
Dispatch.call(selection,"MoveRight",newVariant
(1),newVariant
(1));
//Putthespecifiedtextattheinsertionpoint
Dispatch.put(selection,"Text",textToInsert);
//取消选中,应该就是移动光标
Dispatch.call(selection,"MoveRight",newVariant
(1),newVariant
(1));
}
//向文档中添加一个图片,
publicvoidinsertJpeg(StringjpegFilePath){
Dispatchselection=Dispatch.get(MsWordApp,"Selection").toDispatch();
Dispatchimage=Dispatch.get(selection,"InLineShapes").toDispatch();
Dispatch.call(image,"AddPicture",jpegFilePath);
}
//段落的处理,插入格式化的文本
publicvoidinsertFormatStr(Stringtext){
DispatchwordContent=Dispatch.get(document,"Content").toDispatch();//取得word文件的内容
Dispatch.call(wordContent,"InsertAfter",text);//插入一个段落到最后
Dispatchparagraphs=Dispatch.get(wordContent,"Paragraphs")
.toDispatch();//所有段落
intparagraphCount=Dispatch.get(paragraphs,"Count").changeType(
Variant.VariantInt).getInt();//一共的段落数
//找到刚输入的段落,设置格式
DispatchlastParagraph=Dispatch.call(paragraphs,"Item",
newVariant(paragraphCount)).toDispatch();//最后一段(也就是刚插入的)
//Range对象表示文档中的一个连续范围,由一个起始字符位置和一个终止字符位置定义
DispatchlastParagraphRange=Dispatch.get(lastParagraph,"Range")
.toDispatch();
Dispatchfont=Dispatch.get(lastParagraphRange,"Font").toDispatch();
Dispatch.put(font,"Bold",newVariant(true));//设置为黑体
Dispatch.put(font,"Italic",newVariant(true));//设置为斜体
Dispatch.put(font,"Name",newVariant("宋体"));//
Dispatch.put(font,"Size",newVariant(12));//小四
Dispatchselection=Dispatch.get(MsWordApp,"Selection").toDispatch();
Dispatch.call(selection,"TypeParagraph");//插入一个空行
Dispatchalignment=Dispatch.get(selection,"ParagraphFormat")
.toDispatch();//段落格式
Dispatch.put(alignment,"Alignment","2");//(1:
置中2:
靠右3:
靠左)
}
//word中在对表格进行遍历的时候,是先列后行先column后cell
//另外下标从1开始
publicvoidinsertTable(StringtableTitle,introw,intcolumn){
Dispatchselection=Dispatch.get(MsWordApp,"Selection").toDispatch();//输入内容需要的对象
Dispatch.call(selection,"TypeText",tableTitle);//写入标题内容//标题格行
Dispatch.call(selection,"TypeParagraph");//空一行段落
Dispatch.call(selection,"TypeParagraph");//空一行段落
Dispatch.call(selection,"MoveDown");//游标往下一行
//建立表格
Dispatchtables=Dispatch.get(document,"Tables").toDispatch();
//intcount=Dispatch.get(tables,
//"Count").changeType(Variant.VariantInt).getInt();//document中的表格数量
//Dispatchtable=Dispatch.call(tables,"Item",newVariant(
//1)).toDispatch();//文档中第一个表格
Dispatchrange=Dispatch.get(selection,"Range").toDispatch();///当前光标位置或者选中的区域
DispatchnewTable=Dispatch.call(tables,"Add",range,
newVariant(row),newVariant(column),newVariant
(1))
.toDispatch();//设置row,column,表格外框宽度
Dispatchcols=Dispatch.get(newTable,"Columns").toDispatch();//此表的所有列,
intcolCount=Dispatch.get(cols,"Count").changeType(
Variant.VariantInt).getInt();//一共有多少列实际上这个数==column
System.out.println(colCount+"列");
for(inti=1;i<=colCount;i++){//循环取出每一列
Dispatchcol=Dispatch.call(cols,"Item",newVariant(i))
.toDispatch();
Dispatchcells=Dispatch.get(col,"Cells").toDispatch();//当前列中单元格
intcellCount=Dispatch.get(cells,"Count").changeType(
Variant.VariantInt).getInt();//当前列中单元格数实际上这个数等于row
for(intj=1;j<=cellCount;j++){//每一列中的单元格数
//Dispatchcell=Dispatch.call(cells,"Item",new
//Variant(j)).toDispatch();//当前单元格
//Dispatchcell=Dispatch.call(newTable,"Cell",new
//Variant(j),newVariant(i)).toDispatch();//取单元格的另一种方法
//Dispatch.call(cell,"Select");//选中当前单元格
//Dispatch.put(selection,"Text",
//"第"+j+"行,第"+i+"列");//往选中的区域中填值,也就是往当前单元格填值
putTxtToCell(newTable,j,i,"第"+j+"行,第"+i+"列");//与上面四句的作用相同
}
}
}
/***/
/**
*在指定的单元格里填写数据
*
*@paramtableIndex
*@paramcellRowIdx
*@paramcellColIdx
*@paramtxt
*/
publicvoidputTxtToCell(Dispatchtable,intcellRowIdx,intcellColIdx,
Stringtxt){
Dispatchcell=Dispatch.call(table,"Cell",newVariant(cellRowIdx),
newVariant(cellColIdx)).toDispatch();
Dispatch.call(cell,"Select");
Dispatchselection=Dispatch.get(MsWordApp,"Selection").toDispatch();//输入内容需要的对象
Dispatch.put(selection,"Text",txt);
}
/***/
/**
*在指定的单元格里填写数据
*
*@paramtableIndex
*@paramcellRowIdx
*@paramcellColIdx
*@paramtxt
*/
publicvoidputTxtToCell(inttableIndex,intcellRowIdx,intcellColIdx,
Stringtxt){
//所有表格
Dispatchtables=Dispatch.get(document,"Tables").toDispatch();
//要填充的表格
Dispatchtable=Dispatch.call(tables,"Item",newVariant(tableIndex))
.toDispatch();
Dispatchcell=Dispatch.call(table,"Cell",newVariant(cellRowIdx),
newVariant(cellColIdx)).toDispatch();
Dispatch.call(cell,"Select");
Dispatchselection=Dispatch.get(MsWordApp,"Selection").toDispatch();//输入内容需要的对象
Dispatch.put(selection,"Text",txt);
}
//合并两个单元格
publicvoidmergeCell(Dispatchcell1,Dispatchcell2){
Dispatch.call(cell1,"Merge",cell2);
}
publicvoidmergeCell(Dispatchtable,introw1,intcol1,introw2,intcol2){
Dispatchcell1=Dispatch.call(table,"Cell",newVariant(row1),
newVariant(col1)).toDispatch();
Dispatchcell2=Dispatch.call(table,"Cell",newVariant(row2),
newVariant(col2)).toDispatch();
mergeCell(cell1,cell2);
}
publicvoidmergeCellTest(){
Dispatchtables=Dispatch.get(document,"Tables").toDispatch();
inttableCount=Dispatch.get(tables,"Count").changeType(
Variant.VariantInt).getInt();//document中的表格数量
Dispatchtable=Dispatch.call(tables,"Item",newVariant(tableCount))
.toDispatch();//文档中最后一个table
mergeCell(table,1,1,1,2);//将table中x=1,y=1与x=1,y=2的两个单元格合并
}
//========================================================
/***/
/**
*把选定的内容或光标插入点向上移动
*
*@parampos
*移动的距离
*/
publicvoidmoveUp(intpos){
Dispatchselection=Dispatch.get(MsWordApp,"Selection").toDispatch();//输入内容需要的对象
for(inti=0;i //MoveDownMoveLeftmoveRight //moveStart(Dispatch.call(selection,"HomeKey",newVariant(6)); //) //moveEndDispatch.call(selection,"EndKey",newVariant(6)); Dispatch.call(selection,"MoveUp"); } } /***/ /** *从选定内容或插入点开始查找文本 * *@paramtoFindText *要查找的文本 *@returnbooleantrue-查找到并选中该文本,false-未查找到文本 */ publicbooleanfind(StringtoFindText){ if(toFindText==null||toFindText.equals("")) returnfalse; Dispatchselection=Dispatch.get(MsWordApp,"Selection").toDispatch();//输入内容需要的对象 //从selection所在位置开始查询 Dispatchfind=Dispatch.call(selection,"Find").toDispatch(); //设置要查找的内容 Dispatch.put(find,"Text",toFindText); //向前查找 Dispatch.put(find,"Forward","True"); //设置格式 Dispatch.put(find,"Format","True"); //大小写匹配 Dispatch.put(find,"MatchCase","True"); //全字匹配 Dispatch.put(find,"MatchWholeWord","True"); //查找并选中 returnDispatch.call(find,"Execute").getBoolean(); } /***/ /** *把选定选定内容设定为替换文本 * *@paramtoFindText *查找字符串 *@paramnewText *要替换的内容 *@return */ publicbooleanreplaceText(StringtoFindText,StringnewText){ if(! find(toFindText)) returnfalse; Dispatchselection=Dispatch.get(MsWordApp,"Selection").toDispatch();//输入内容需要的对象 Dispatch.put(selection,"Text",newText); returntrue; } publicvoidprintFile(){ //Justprintthecurrentdocumenttothedefaultprinter Dispatch.call(document,"PrintOut"); } //保存文档的更改 publicvoidsave(){ Dispatch.call(document,"Save"); } publ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 导出 word