2017-08-08 3 views
0

Ich hoffe, dass jemand dabei helfen kann.Wie kann ich eine benutzerdefinierte Hintergrundfarbe auf einer XWPFTableCell einstellen?

Ich versuche, docx Dokument mit Apache poi, die ich kann, aber jetzt habe ich ein Problem, wie kann ich Hintergrundfarbe in einer Tabelle Spalte oder Zelle?

Ich versuche, so etwas zu erreichen. here

Das war, was ich bisher hatte. here

Unten ist mein Code.

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

Was ist mit [XWPFTableCell.setColor] (https://poi.apache.org/apidocs/org/apache/poi/xwpf/usermodel/XWPFTableCell.html#setColor%28java.lang.String%29)? Hast du es versucht? –

+0

Schön, dass es jetzt funktioniert. Ich dachte zunächst, dass diese Methode zum Ändern der Schriftfarbe verwendet wurde. Vielen Dank. – blitzen12

Antwort

0

Set Hintergrundfarbe für eine Zelle, tun unten wie:

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

die Farbe sollte hex wie cccccc verwenden.

Verwandte Themen