如何格式化Apache POI中的XWPFTable中的文本

时间:2014-12-24 09:57:20

标签: java apache-poi

我使用Apache POI在单词中创建了XWPFTable。现在,表格正确地显示在列中的文本。现在我想格式化表格中的文字以及大小,字体等。我该怎么做?我所看到的是每个技巧都与运行选项相关联。但我想要的是TableRow。看看到目前为止我做了什么:

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");

我想格式化表tableTwotableTwoRowTwo的文字。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:17)

在单元格中添加段落。

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();
    }

通常这会在单元格中添加一个段落,但单元格已经有一个。因此,首先删除单元格中的段落,然后添加新段落,否则结果将在新段落之前为空行。

rowOne.getCell(0).removeParagraph(0);

答案 1 :(得分:3)

我找到了一个简单的解决方案。

XWPFTable table = document.createTable();
XWPFTableRow row = table.insertNewTableRow(0);
XWPFRun run = row.addNewTableCell().addParagraph().createRun();
run.setBold(true);run.setText("Your Text");

您可以添加任何其他文本格式函数来运行对象。

答案 2 :(得分:0)

非常感谢,以下代码也适用于我。在我的情况下,我用另一个文本替换了PLACE HOLDER。

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);

     }                
}