2017-08-08 4 views
0

私は誰かがこれを助けることを願っています。XWPFTableCellでカスタム背景色を設定するにはどうすればよいですか?

私はできるだけ早く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); 
     } 
    } 
} 
+2

[XWPFTableCell.setColor](https://poi.apache.org/apidocs/org/apache/poi/xwpf/usermodel/XWPFTableCell.html#setColor%28java.lang.String%29)についてはどうですか?やってみました? –

+0

これはうまく動作します。私は当初、そのメソッドがフォントの色を変更するために使用されたと考えました。ありがとう。 – blitzen12

答えて

0

設定の背景色は、以下のように実行します。

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

色がccccccのような六角形を使用する必要があります。

関連する問題