サンプル

ByteArrayOutputStream baos = null;
try {
    // 郵便局から提供されるテンプレートファイルを読み込む
    XWPFDocument templateDoc =
            new XWPFDocument(new FileInputStream("C:\\japan_post\\template01.docx"));

    // 雛形の内容をすべて削除する(改行がある)
    int elementsSize = templateDoc.getBodyElements().size();
    for (int i = 0; i < elementsSize; i++) {
        templateDoc.removeBodyElement(0);
    }

    // jasperReport で生成した DOCX ファイルを読み込む
    XWPFDocument doc = new XWPFDocument(new ByteArrayInputStream(os.toByteArray()));

    // 上記 DOCX ファイルは、表でレイアウトを調整しているので、表の書式を整えつつ
    // 雛形ファイルに表をコピーする。
    for (XWPFTable t : doc.getTables()) {
        // 表自体の VALIGN を中心 (CENTER) にする。
        CTTblPr tblPr = t.getCTTbl().getTblPr();
        CTJc jc = null;
        if (tblPr.isSetJc()) {
            jc = tblPr.getJc();
        } else {
            jc = tblPr.addNewJc();
        }
        jc.setVal(STJc.CENTER);

        // 各セルの行間が標準だと大きすぎるので、設定しなおす
        for (XWPFTableRow row : t.getRows()) {
            for (XWPFTableCell cell : row.getTableCells()) {
                for (XWPFParagraph p : cell.getParagraphs()) {
                    p.setSpacingAfter(0);
                    p.setSpacingAfterLines(0);
                    p.setSpacingBefore(0);
                    p.setSpacingBeforeLines(0);
                    p.setSpacingLineRule(LineSpacingRule.EXACT);

                    // XWPFParagraph に CTSpacing#setLine
                    // を呼ぶメソッドが無いので、以下のような実装になる。
                    CTP ctp = p.getCTP();
                    CTPPr ppr = null;
                    if (ctp.isSetPPr()) {
                        ppr = ctp.getPPr();
                    } else {
                        ppr = ctp.addNewPPr();
                    }
                    CTSpacing spacing = null;
                    if (ppr.isSetSpacing()) {
                        spacing = ppr.getSpacing();
                    } else {
                        spacing = ppr.addNewSpacing();
                    }
                    spacing.setLine(BigInteger.valueOf(280));
                }
            }
        }
        // 雛形ファイルに表を1つ作成する。
        templateDoc.createTable();
        // 書式を設定した表を雛形ファイルに作成した表にセットする。
        templateDoc.setTable(templateDoc.getTables().size() - 1, t);
    }

    baos = new ByteArrayOutputStream();
    templateDoc.write(baos);
} catch (IOException e) {
    throw new HogeException("帳票生成のIOに失敗", e);
} finally {
    IOUtils.closeQuietly(baos);
}

return baos.toByteArray();