如何在XWPFTableCell上设置自定义背景颜色?

时间:2017-08-08 04:06:29

标签: java apache-poi xwpf

我希望有人可以帮忙解决这个问题。

我尝试使用apache poi生成docx文档,但是现在我遇到了如何在表格列或单元格中设置背景颜色的问题?

我试图实现这样的目标。 here

这是我到目前为止所做的。here

以下是我的代码。

public static void main(String [] args){
   XWPFDocument doc = new XWPFDocument();
   XWPFTable table = doc.createTable(3, 4);
   fillHeader(table);
   mergeCellsHorizontally(table, 0, 0, 1);
   mergeCellsVertically(table, 2, 0, 1);
   mergeCellsVertically(table, 3, 0, 1);
}

private static void fillHeader(XWPFTable table) {
    XWPFTableRow row = table.getRow(0);
    row.getCell(0).setText("Column 1");
    row.getCell(2).setText("Column 2");
    row.getCell(3).setText("Column 3");
    XWPFTableRow row1 = table.getRow(1);
    row1.getCell(0).setText("Col 1 Row 1");
    row1.getCell(1).setText("Col 2 Row 1");
}

private static void mergeCellsHorizontally(XWPFTable table, int row, int 
  fromCol, int toCol) {
   for (int cellIndex = fromCol; cellIndex <= toCol; cellIndex++) {
      XWPFTableCell cell = table.getRow(row).getCell(cellIndex);
      if (cellIndex == fromCol) {ue
        cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
      } else {
        cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
      }
  }
 }

 private static void mergeCellsVertically(XWPFTable table, int col, int 
  fromRow, int toRow) {
   for (int rowIndex = fromRow; rowIndex <= toRow; rowIndex++) {
      XWPFTableCell cell = table.getRow(rowIndex).getCell(col);
      if (rowIndex == fromRow) {
        cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
      } else {
        cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
      }
   }
}

1 个答案:

答案 0 :(得分:1)

设置单元格的背景颜色,如下所示:

cell.getCTTc().addNewTcPr().addNewShd().setFill("cccccc");

颜色应该使用像cccccc这样的十六进制。