Word document creation API in Java

calendar_today Asked Jan 2, 2010
thumb_up 8 upvotes
history Updated April 14, 2026

Direct Answer

I've worked with POI before and it's certainly able to generate Word documents. But the devil is in the details. Word has thousands of features: You can put numbered lists…. This is an advisory response with reference links, ranked #15th of 32 by community upvote score, from 2010.


The Problem (Q-score 7, ranked #15th of 32 in the Word VBA archive)

The scenario as originally posted in 2010

I would like to create a word document using a template, replace some variables (fields) and save it as a new word document.

I was thinking using Apache POI, http://poi.apache.org/ is it the best for this purpose?
can you share your impression from it?

Why community consensus is tight on this one

Across 32 Word VBA entries in the archive, the accepted answer here holds solid answer (above median) status — meaning voters are unusually aligned on the right fix.


The Verified Solution — solid answer (above median) (+8)

Advisory answer — community consensus with reference links

Note: the verified answer below is a reference / advisory response rather than a copy-ready snippet.

I’ve worked with POI before and it’s certainly able to generate Word documents. But the devil is in the details.

Word has thousands of features: You can put numbered lists starting at #13 with negative indents into two joined cells of a table included in another table that is itself part of a bullet list… you get the idea. When the POI documentation says they are a work in progress, that reflects what will probably be an eternal state of trying to catch up to the (to us, undocumented) specification of Word.

Documents with a reasonably “normal” set of used features are well supported by POI, whose interfaces and methods are reasonable and consistent but sometimes require a bit of work. But as Pascal says, documents with a not too exorbitant set of features are also supported by RTF.
I have almost no experience “doing” RTF but it’s probably a bit simpler than working with POI.

If you’re working in an environment or for a customer who insists that your produced documents be .DOC rather than .RTF, then POI is pretty much your only choice, unless you can introduce a step where you use a bit of Office automation to convert RTF into DOC.

Update: I’ve had a couple more ideas in the meantime.

Using POI or creating RTF documents is something that you could do on practically any platform. At my job, all servers doing processing like this happen to be running Linux, for example.

However, in the likely case that your programs will run under Windows, there is another alternative: Jacob http://www.land-of-kain.de/docs/jacob/

Jacob is a COM interface for Java; it essentially allows you to “remote control” Windows programs such as Word and Excel. The document I linked to above is not to Jacob’s own site but to a single page with “cookie cutter” recipes for using Jacob. The project itself is on SourceForge: http://sourceforge.net/projects/jacob-project/ But people claim, and rightly so, that the documentation is a bit lacking.

Jacob has the advantage over all other solutions that you’re dealing with the “real” Word and therefore all capabilities of Word are available to you. This would be an alternative if there are detail aspects of your document that just can’t be handled with POI or via the RTF format.


When to Use It — vintage (14+ years old, pre-2013)

Ranked #15th in its category — specialized fit

This pattern sits in the 58% tail relative to the top answer. Reach for it when your scenario closely matches the question title; otherwise browse the Word VBA archive for a higher-consensus alternative.

What changed between 2010 and 2026

The answer is 16 years old. The Word VBA object model has been stable across Office 2013, 2016, 2019, 2021, 365, and 2024/2026 LTSC, so the pattern still compiles. Changes that might affect you: 64-bit API declarations (use PtrSafe), blocked macros in downloaded files (Mark-of-the-Web), and the shift toward Office Scripts for web-first workflows.

help
Frequently Asked Questions

Is this above-median answer still worth copying?
expand_more

Answer score +8 vs the Word VBA archive median ~4; this entry is solid. The score plus 7 supporting upvotes on the question itself (+7) means the asker and 7 subsequent voters all validated the approach.

This answer links out — what are the reference links worth following?
expand_more

Read the first external link for the canonical reference, then search this archive for a top-10 entry in the same category — advisory answers are best paired with a ranked code snippet to close the loop.

This answer is 16 years old. Is it still relevant in 2026?
expand_more

Published 2010, which is 16 year(s) before today’s Office 2026 build. The Word VBA object model has had no breaking changes in that window. Three things to re-test: (1) blocked macros on downloaded files (Mark-of-the-Web), (2) 64-bit API declarations (PtrSafe, LongPtr), (3) any shift toward Office Scripts for web scenarios.

Which Word VBA pattern ranks just above this one at #14?
expand_more

The pattern one rank above is “Retrieving the COM class factory for component error while generating word document”. If your use case overlaps, compare both before committing.

Data source: Community-verified Q&A snapshot. Q-score 7, Answer-score 8, original post 2010, ranked #15th of 32 in the Word VBA archive. Last regenerated April 14, 2026.