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

Java 如何在XWPFTableCell上设置自定义背景色?,java,apache-poi,xwpf,Java,Apache Poi,Xwpf,我希望有人能帮上忙 我正在尝试使用ApachePOI生成docx文档,我能够做到这一点,但现在我遇到了一个问题:如何在表列或单元格中设置背景色 我正在努力实现这样的目标 这就是我到目前为止所拥有的 下面是我的代码 public static void main(String [] args){ XWPFDocument doc = new XWPFDocument(); XWPFTable table = doc.createTable(3, 4); fillHeader(ta

我希望有人能帮上忙

我正在尝试使用ApachePOI生成docx文档,我能够做到这一点,但现在我遇到了一个问题:如何在表列或单元格中设置背景色

我正在努力实现这样的目标

这就是我到目前为止所拥有的

下面是我的代码

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);
      }
   }
}
publicstaticvoidmain(字符串[]args){
XWPFDocument doc=新XWPFDocument();
XWPFTable table=doc.createTable(3,4);
填充头(表格);
横向合并单元(表,0,0,1);
垂直合并单元(表2,0,1);
垂直合并单元(表3,0,1);
}
专用静态无效填充头(XWPFTable表){
XWPFTableRow=table.getRow(0);
row.getCell(0.setText(“第1列”);
row.getCell(2.setText)(“第2列”);
行.getCell(3).setText(“第3列”);
XWPFTableRow1=table.getRow(1);
行1.getCell(0.setText(“列1行1”);
行1.getCell(1.setText(“第2列第1行”);
}
私有静态void横向合并单元格(XWPFTable表,int行,int
fromCol,int-toCol){

对于(int cellIndex=fromCol;cellIndex设置单元格的背景色,请执行以下操作:

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

颜色应该使用十六进制的
cccccc

怎么样?你试过了吗?现在很好。我最初认为这种方法是用来改变字体颜色的。谢谢。