我有一个带边框的XWPFTable
,我在里面添加了一个分页符:
addBreak(BreakType.PAGE)
在下一页中,我想删除最后一个XWPFTableRow
的边框,但我不能,因为此行不提供对边框的访问权限。边框属于表格。
如何删除最后一行的边框?
答案 0 :(得分:1)
以下代码显示了如何访问/添加CTTcBorders对象以根据需要设置标志。
XWPFDocument doc = new XWPFDocument();
CTTbl ctTable = CTTbl.Factory.newInstance();
XWPFTable table = new XWPFTable(ctTable, doc);
XWPFTableRow tr = table.getRow(0);
XWPFTableCell cell = tr.getCell(0);
CTTc ctTc = cell.getCTTc();
CTTcPr tcPr = ctTc.addNewTcPr();
CTHMerge hMerge = tcPr.addNewHMerge();
hMerge.setVal(STMerge.RESTART);
CTTcBorders tblBorders = tcPr.addNewTcBorders();
对于现有文档,您需要遍历对象以找到您想要调整的对象。
答案 1 :(得分:0)
解决方案是:
cell.getCTTc().getTcPr().getTcBorders().addNewRight().setVal(STBorder.NIL);
谢谢!
答案 2 :(得分:0)
我试图仅删除某些行的中间边框,而不仅仅是删除右边的边框。
我必须迭代所需的单元格,然后对于第 i 个单元格(cell = row.get(i)),删除 i-th的右边框单元格 AND 下一个单元格的左边框(nextCell = row.get(i + 1))。
一个单元格的右边界与该行中下一个单元格的左边界重合,我需要同时隐藏两者。
public void hideTableInnerBorders(XWPFTable table){
// for the 5th and 6th rows (index 4,5),
// hide the right border for the three middle columns (index 1,2,3)
// and the left border on the three last columns (index 2,3,4)
List<XWPFTableRow> rows = table.getRows();
for( int rowIndex = 4; rowIndex < rows.size(); rowIndex++){ // rowIndex:{4,5} - last two lines
List<XWPFTableCell> cells = rows.get(rowIndex).getTableCells();
for(int cellIndex = 1; cellIndex < cells.size(); cellIndex++){ // cellIndex:{1,2,3,4}
XWPFTableCell cell = cells.get(cellIndex);
CTTcBorders tblBorders = cell.getCTTc().getTcPr().addNewTcBorders();
// remove the right border for the indexes 1 2 3
if( cellIndex == 1 || cellIndex == 2 || cellIndex == 3 ){
tblBorders.addNewRight().setVal(STBorder.NIL);
}
// remove the left border for the indexes 2,3,4
if ( cellIndex == 2 || cellIndex == 3 || cellIndex == 4 ) {
tblBorders.addNewLeft().setVal(STBorder.NIL);
}
}
}
}