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