I have created a XWPFTable
in word using Apache POI. Now the table is coming out properly with text in the column. Now I want to format the text in the table along with size, font etc. How can I do that? What I am seeing is that every trick is associated with the run option. But what I want is in TableRow
. See what I have done so far:
XWPFTable tableTwo = document.createTable();
XWPFTableRow tableTwoRowOne = tableTwo.getRow(0);
tableTwo.getCTTbl().getTblPr().unsetTblBorders();
tableTwoRowOne.getCell(0).setText("No Match – Location: ");
tableTwoRowOne.addNewTableCell().setText("Prospect has expressed unwillingness to relocate or is based out of area where commute is not feasible");
XWPFTableRow tableTwoRowTwo = tableTwo.createRow();
tableTwoRowTwo.getCell(0).setText("No Match – Scalability: ");
tableTwoRowTwo.getCell(1).setText("Prospect’s recent organizational size, structure, and complexity is not scalable to client’s environment");
I want to format the text of the table tableTwo
and tableTwoRowTwo
. How can I achieve that?
Add paragraph in the cell.
XWPFTableRow rowOne = table.getRow(0);
XWPFParagraph paragraph = rowOne.getCell(0).addParagraph();
setRun(paragraph.createRun() , "Calibre LIght" , 10, "2b5079" , "Some string" , false, false);
private static void setRun (XWPFRun run , String fontFamily , int fontSize , String colorRGB , String text , boolean bold , boolean addBreak) {
run.setFontFamily(fontFamily);
run.setFontSize(fontSize);
run.setColor(colorRGB);
run.setText(text);
run.setBold(bold);
if (addBreak) run.addBreak();
}
Usually this would add one more paragraph in the cell, but the cell already has one. So first remove the paragraph in the cell and then add new one, otherwise the result would be empty row before the new paragraph.
rowOne.getCell(0).removeParagraph(0);
I found a simple solution.
XWPFTable table = document.createTable();
XWPFTableRow row = table.insertNewTableRow(0);
XWPFRun run = row.addNewTableCell().addParagraph().createRun();
run.setBold(true);run.setText("Your Text");
You can add any other text format functions to run object.
Thanks a lot and below code also worked for me. In my case I was replacing the PLACE HOLDER with another text.
for (XWPFTableCell cell : cells) {
String cellTextString = cell.getText();
if (cellTextString != null && cellTextString.contains(placeholder)) {
cellTextString = cellTextString.replace(placeholder,waterMarkText);
cell.removeParagraph(0);
XWPFParagraph addParagraph = cell.addParagraph();
XWPFRun run = addParagraph.createRun();
run.setFontFamily("Calibri");
run.setFontSize(10);
run.setText(cellTextString);
}
}