Java 在ApachePOI中是否有可以删除表内行边框的方法?
在ApachePOI中,您可以删除表中的所有边框,但是我不想删除所有边框,我只想删除表内部行的边框,可以吗?ApachePOI是否提供了实现这一点的方法 我创建了以下方法来创建表。我需要的是删除第二列的顶部和底部边框Java 在ApachePOI中是否有可以删除表内行边框的方法?,java,apache-poi,Java,Apache Poi,在ApachePOI中,您可以删除表中的所有边框,但是我不想删除所有边框,我只想删除表内部行的边框,可以吗?ApachePOI是否提供了实现这一点的方法 我创建了以下方法来创建表。我需要的是删除第二列的顶部和底部边框 public void theTable(XWPFDocument doc) { XWPFTable t = doc.createTable(2,3); t.getRow(0).getCell(0).setWidth("5000"); t.getRow(
public void theTable(XWPFDocument doc) {
XWPFTable t = doc.createTable(2,3);
t.getRow(0).getCell(0).setWidth("5000");
t.getRow(0).getCell(1).setWidth("500");
t.getRow(0).getCell(2).setWidth("5000");
}
我有以下不符合我的目标,因为它针对的是整个表,而不是第2列:
t.removeBorders();
t.removeBottomBorder();
t.removeInsideHBorder();
t.removeInsideVBorder();
t.removeLeftBorder();
t.removeRightBorder();
t.removeTopBorder();
有可能做到这一点吗?到目前的Apache POI 4.1.2为止,
xwptablecell
缺少边界设置方法。但是单词
表格的表格单元格可能有自己的边框设置。因此,这些方法应该在以后的版本中添加
在此之前,我们可以使用底层的ooxml模式
类提供自己的方法来实现这一点
例如:
import java.io.FileOutputStream;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
public class CreateWordTableCellBorders {
private enum Border { LEFT, TOP, BOTTOM, RIGHT }
static void setTableCellBorder(XWPFTableCell cell, Border border, STBorder.Enum type) {
CTTc tc = cell.getCTTc();
CTTcPr tcPr = tc.getTcPr(); if (tcPr == null) tcPr = tc.addNewTcPr();
CTTcBorders tcBorders = tcPr.getTcBorders(); if (tcBorders == null) tcBorders = tcPr.addNewTcBorders();
if (border == Border.LEFT) {
CTBorder left = tcBorders.getLeft(); if(left == null) left = tcBorders.addNewLeft();
left.setVal(type);
} else if (border == Border.TOP) {
CTBorder top = tcBorders.getTop(); if(top == null) top = tcBorders.addNewTop();
top.setVal(type);
} else if (border == Border.BOTTOM) {
CTBorder bottom = tcBorders.getBottom(); if(bottom == null) bottom = tcBorders.addNewBottom();
bottom.setVal(type);
} else if (border == Border.RIGHT) {
CTBorder right = tcBorders.getRight(); if(right == null) right = tcBorders.addNewRight();
right.setVal(type);
}
}
public static void main(String[] args) throws Exception {
XWPFDocument document= new XWPFDocument();
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run=paragraph.createRun();
run.setText("The table:");
//create the table
XWPFTable table = document.createTable(2,3);
//set column widths and table cell borders
for (XWPFTableRow row : table.getRows()) {
row.getCell(0).setWidth("5000");
row.getCell(1).setWidth("500");
setTableCellBorder(row.getCell(1), Border.TOP, STBorder.NIL);
setTableCellBorder(row.getCell(1), Border.BOTTOM, STBorder.NIL);
row.getCell(2).setWidth("5000");
}
FileOutputStream out = new FileOutputStream("CreateWordTableCellBorders.docx");
document.write(out);
out.close();
document.close();
}
}
到目前为止,ApachePOI4.1.2中的
xwptablecell
缺少边界设置方法。但是单词
表格的表格单元格可能有自己的边框设置。因此,这些方法应该在以后的版本中添加
在此之前,我们可以使用底层的ooxml模式
类提供自己的方法来实现这一点
例如:
import java.io.FileOutputStream;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
public class CreateWordTableCellBorders {
private enum Border { LEFT, TOP, BOTTOM, RIGHT }
static void setTableCellBorder(XWPFTableCell cell, Border border, STBorder.Enum type) {
CTTc tc = cell.getCTTc();
CTTcPr tcPr = tc.getTcPr(); if (tcPr == null) tcPr = tc.addNewTcPr();
CTTcBorders tcBorders = tcPr.getTcBorders(); if (tcBorders == null) tcBorders = tcPr.addNewTcBorders();
if (border == Border.LEFT) {
CTBorder left = tcBorders.getLeft(); if(left == null) left = tcBorders.addNewLeft();
left.setVal(type);
} else if (border == Border.TOP) {
CTBorder top = tcBorders.getTop(); if(top == null) top = tcBorders.addNewTop();
top.setVal(type);
} else if (border == Border.BOTTOM) {
CTBorder bottom = tcBorders.getBottom(); if(bottom == null) bottom = tcBorders.addNewBottom();
bottom.setVal(type);
} else if (border == Border.RIGHT) {
CTBorder right = tcBorders.getRight(); if(right == null) right = tcBorders.addNewRight();
right.setVal(type);
}
}
public static void main(String[] args) throws Exception {
XWPFDocument document= new XWPFDocument();
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run=paragraph.createRun();
run.setText("The table:");
//create the table
XWPFTable table = document.createTable(2,3);
//set column widths and table cell borders
for (XWPFTableRow row : table.getRows()) {
row.getCell(0).setWidth("5000");
row.getCell(1).setWidth("500");
setTableCellBorder(row.getCell(1), Border.TOP, STBorder.NIL);
setTableCellBorder(row.getCell(1), Border.BOTTOM, STBorder.NIL);
row.getCell(2).setWidth("5000");
}
FileOutputStream out = new FileOutputStream("CreateWordTableCellBorders.docx");
document.write(out);
out.close();
document.close();
}
}
您好,Axel,我刚刚添加了创建表的方法,我遇到的问题是专门针对第2列边框。您至少应该在问题中提到apache poi的哪些部分有问题。如果在
apachepoi
的上下文中谈论术语“table”,而没有进一步的上下文,大多数人会认为它是关于Excel
。当然,代码示例消除了所有疑问。因此,没有代码示例就没有问题。嗨,Axel,我刚刚添加了创建表的方法,我遇到的问题是专门针对第2列边框。您至少应该在问题中提到apache poi的哪一部分有问题。如果在apachepoi
的上下文中谈论术语“table”,而没有进一步的上下文,大多数人会认为它是关于Excel
。当然,代码示例消除了所有疑问。所以,没有代码示例就没有问题了。谢谢,这非常有效,这正是我想要的。我确信,当涉及到java apache-poi中的表行边框时,这回答了很多人的问题。我确信这回答了很多人在JavaApachePOI中的表行边界问题。