首页后端开发PHPJava怎么实现合并word文档

Java怎么实现合并word文档

时间2023-07-07 08:07:01发布访客分类PHP浏览1212
导读:今天小编给大家分享一下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核实处理,我们将尽快回复您,谢谢合作!

javaword

若转载请注明出处: Java怎么实现合并word文档
本文地址: https://pptw.com/jishu/293764.html
Java @SentinelResource怎么应用 游戏行业租用香港云vps的优势

游客 回复需填写必要信息