Java怎么实现合并word文档
导读:今天小编给大家分享一下Java怎么实现合并word文档的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
今天小编给大家分享一下Java怎么实现合并word文档的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
说明
在做项目中,遇到了一种情况,需要将一个小word文档的内容插入到一个大word(主文档)中。
实现
1.首先定义好主文档
在主文档需要插入小word文档的位置上添加一个书签,这个书签名字要记住,后面要用。
2.定义需要追加的文档
3. 代码实现
packagecom.test.word;
importcom.aspose.words.Body;
importcom.aspose.words.Bookmark;
importcom.aspose.words.BookmarkCollection;
importcom.aspose.words.CompositeNode;
importcom.aspose.words.Document;
importcom.aspose.words.DocumentBuilder;
importcom.aspose.words.ImportFormatMode;
importcom.aspose.words.Node;
importcom.aspose.words.NodeImporter;
importcom.aspose.words.Orientation;
importcom.aspose.words.PaperSize;
importcom.aspose.words.Section;
publicclassTest1
{
publicstaticvoidmain(String[]args)
{
try
{
//主文档
DocumentmainDocument=newDocument("F:\\test\\main.docx");
//需要进行追加的文档
DocumentaddDocument=newDocument("F:\\test\\add.docx");
//第四个参数是书签名,需要和步骤1在大word文档中定义的书签名对上
appendDocument(mainDocument,addDocument,true,"shuqian1");
System.out.println("成功!");
//将最终合并完成后的文档对象保存到文件中
mainDocument.save("F:\\test\\result.docx");
}
catch(Exceptione)
{
e.printStackTrace();
}
}
/**
*@Description文档拼接
*@parammainDoc主文档
*@paramaddDoc要拼接的文档
*@paramisPortrait是否横向拼接
*@parambookmark书签名称,将add文档拼接到主文档哪个位置
*/
publicstaticvoidappendDocument(DocumentmainDoc,DocumentaddDoc,booleanisPortrait,Stringbookmark)
{
DocumentBuilderbuilder=null;
try
{
builder=newDocumentBuilder(mainDoc);
BookmarkCollectionbms=mainDoc.getRange().getBookmarks();
Bookmarkbm=bms.get(bookmark);
if(bm!=null)
{
builder.moveToBookmark(bookmark,true,false);
builder.writeln();
builder.getPageSetup().setPaperSize(PaperSize.A4);
if(isPortrait)
{
builder.getPageSetup().setOrientation(Orientation.PORTRAIT);
}
else
{
builder.getPageSetup().setOrientation(Orientation.LANDSCAPE);
}
NodeinsertAfterNode=builder.getCurrentParagraph().getPreviousSibling();
insertDocumentAfterNode(insertAfterNode,mainDoc,addDoc);
}
}
catch(Exceptione)
{
e.printStackTrace();
}
}
/**
*@Description
*@paraminsertAfterNode插入的位置
*@parammainDoc主文档
*@paramsrcDoc要拼接进去的文档
*@Returnvoid
*/
@SuppressWarnings("rawtypes")
privatestaticvoidinsertDocumentAfterNode(NodeinsertAfterNode,DocumentmainDoc,DocumentsrcDoc)throwsException
{
if(insertAfterNode.getNodeType()!=8&
&
insertAfterNode.getNodeType()!=5)
{
thrownewException("Thedestinationnodeshouldbeeitheraparagraphortable.");
}
else
{
CompositeNodedstStory=insertAfterNode.getParentNode();
Bodybody=srcDoc.getLastSection().getBody();
while(null!=body.getLastParagraph()&
&
!body.getLastParagraph().hasChildNodes())
{
srcDoc.getLastSection().getBody().getLastParagraph().remove();
}
NodeImporterimporter=newNodeImporter(srcDoc,mainDoc,ImportFormatMode.KEEP_SOURCE_FORMATTING);
intsectCount=srcDoc.getSections().getCount();
for(intsectIndex=0;
sectIndexsectCount;
++sectIndex)
{
SectionsrcSection=srcDoc.getSections().get(sectIndex);
intnodeCount=srcSection.getBody().getChildNodes().getCount();
for(intnodeIndex=0;
nodeIndexnodeCount;
++nodeIndex)
{
NodesrcNode=srcSection.getBody().getChildNodes().get(nodeIndex);
NodenewNode=importer.importNode(srcNode,true);
dstStory.insertAfter(newNode,insertAfterNode);
insertAfterNode=newNode;
}
}
}
}
}
4. 成果展示
以上就是“Java怎么实现合并word文档”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Java怎么实现合并word文档
本文地址: https://pptw.com/jishu/293764.html
