private void replacePosDataInTable(final XWPFTable posTbl, final RechnungDO invoice) { int rowCount = 1; for (RechnungsPositionDO position : invoice.getPositionen()) { String identifier = "{" + position.getNumber() + "}"; Map<String, String> map = new HashMap<>(); map.put(identifier + "Posnummer", String.valueOf(position.getNumber())); map.put(identifier + "Text", position.getText()); map.put(identifier + "Leistungszeitraum", getPeriodOfPerformance(position, invoice)); map.put(identifier + "Menge", formatBigDecimal(position.getMenge())); map.put(identifier + "Einzelpreis", formatBigDecimal(position.getEinzelNetto())); map.put(identifier + "Betrag", formatBigDecimal(position.getNetSum())); for (XWPFTableCell cell : posTbl.getRow(rowCount).getTableCells()) { for (XWPFParagraph cellParagraph : cell.getParagraphs()) { replaceInParagraph(cellParagraph, map); } } rowCount++; } }