Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to format the text in a XWPFTable in Apache POI

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?

like image 734
lucifer Avatar asked Dec 24 '14 09:12

lucifer


People also ask

How do I change the font size in Excel using Java POI?

the POI HSSF Font class has two font size settings methods: setFontHeight(short) - Set the font height in unit's of 1/20th of a point. setFontHeightInPoints(short) - Set the font height in point.

What is XWPFTable?

public class XWPFTable extends java.lang.Object implements IBodyElement, ISDTContents. Sketch of XWPFTable class. Only table's text is being hold. Specifies the contents of a table present in the document. A table is a set of paragraphs (and other block-level content) arranged in rows and columns.


1 Answers

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);
like image 131
makkasi Avatar answered Oct 15 '22 09:10

makkasi