In this tutorial I will show you how to create Header and Footer in Word document using Apache POI API.

We will create here a Java application to create header and footer in word document using apache poi library. Using apache poi library is very easy for any kind of activities in word document.

Prerequisites

The following configurations are required in order to run the application

Eclipse Kepler
JDK 1.8
Have maven 3 installed and configured
Apache POI dependency in pom.xml

You basically need to create a maven project in eclipse.

Once the project is created and eclipse finishes build then you need to modify the pom.xml file as shown below.

Here we will add apache poi API as a dependency for working with microsoft word document or even you can work with open source word document.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.jeejava</groupId>
	<artifactId>apache-poi-word</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>apache-poi-word</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
		<poi.version>3.15</poi.version>
	</properties>

	<dependencies>
		<!-- apache poi for xlsx, docx etc reading/writing -->
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-ooxml</artifactId>
			<version>${poi.version}</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>${java.version}</source>
					<target>${java.version}</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

If you want to use gradle build script to create your project then use below build script to setup the project. Here also we have used the same apache poi version as you have seen in the above maven based pom.xml file.

apply plugin: 'java-library'

repositories {
    jcenter()
}

dependencies {
	compile("org.apache.poi:poi-ooxml:3.15")
}

We know how to create header and footer in word document manually from an option given in the word document but here we will see how to create header and footer in word document using apache poi in Java program.

You may like to read also:

how to create a word document using apache poi

create table in word document using apache poi

how to add images to word document using apache poi

Create below class to create Header and Footer text in word file.

In the below source code we create object of XPFWDocument type and we create two paragraphs with sample text.

We set indent for the paragraph and also align text for the paragraph with adjustment. We wrap the paragraph’s text.

Finally inside the try catch block we create header and footer with sample texts. I have attached an image how the final word document looks like later in the final output.

package com.jeejava.apache.poi.word;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTText;

public class DocxHeaderFooter {

	private static XWPFParagraph[] pars;

	public static void main(String[] args) {
		
		XWPFDocument doc = new XWPFDocument();

		// create a paragraph with justify alignment
		XWPFParagraph p1 = doc.createParagraph();
		// first line indentation in the paragraph
		p1.setFirstLineIndent(400);
		// justify alignment
		p1.setAlignment(ParagraphAlignment.DISTRIBUTE);
		// wrap words
		p1.setWordWrapped(true);
		// XWPFRun object defines a region of text with a common set of
		// properties
		XWPFRun r1 = p1.createRun();
		String t1 = "Paragraph 1. Sample Paragraph Post. This is a sample Paragraph post. Sample Paragraph text is being cut and pasted again and again. This is a sample Paragraph post. peru-duellmans-poison-dart-frog."
				+ " Sample Paragraph Post. This is a sample Paragraph post. Sample Paragraph text is being cut and pasted again and again. This is a sample Paragraph post. peru-duellmans-poison-dart-frog.";
		r1.setText(t1);

		// create a paragraph with left alignment
		XWPFParagraph p2 = doc.createParagraph();
		// first line indentation in the paragraph
		p2.setFirstLineIndent(400);
		// left alignment
		p2.setAlignment(ParagraphAlignment.LEFT);
		// wrap words
		p2.setWordWrapped(true);
		// XWPFRun object defines a region of text with a common set of
		// properties
		XWPFRun r2 = p2.createRun();
		String t2 = "Paragraph 2. Sample Paragraph Post. This is a sample Paragraph post. Sample Paragraph text is being cut and pasted again and again. This is a sample Paragraph post. peru-duellmans-poison-dart-frog."
				+ " Sample Paragraph Post. This is a sample Paragraph post. Sample Paragraph text is being cut and pasted again and again. This is a sample Paragraph post. peru-duellmans-poison-dart-frog.";
		r2.setText(t2);

		try {
			CTP ctP = CTP.Factory.newInstance();

			//header text
			CTText t = ctP.addNewR().addNewT();
			t.setStringValue("Sample Header Text");

			pars = new XWPFParagraph[1];

			p1 = new XWPFParagraph(ctP, doc);
			pars[0] = p1;

			XWPFHeaderFooterPolicy hfPolicy = doc.createHeaderFooterPolicy();
			hfPolicy.createHeader(XWPFHeaderFooterPolicy.DEFAULT, pars);

			ctP = CTP.Factory.newInstance();
			t = ctP.addNewR().addNewT();

			//footer text
			t.setStringValue("Sample Footer Text");
			pars[0] = new XWPFParagraph(ctP, doc);

			hfPolicy.createFooter(XWPFHeaderFooterPolicy.DEFAULT, pars);

			//write to word docx
			OutputStream os = new FileOutputStream(new File("word_header_footer.docx"));
			doc.write(os);
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

Run the above class to see the output in word_header_footer.docx file. The file is created under root directory of the project.

Look at the below image which gives you the final output:

create header and footer in word document using apache poi

That’s all. Hope you have got an idea how to create header and footer in word document using apache poi.

Thanks for reading.

Tags:

I am a professional Web developer, Enterprise Application developer, Software Engineer and Blogger. Connect me on Roy Tutorials | TwitterFacebook Google PlusLinkedin | Reddit

Leave a Reply

Your email address will not be published. Required fields are marked *