如何有选择地将边框应用于 Apache POI 中的 docx table?
How to selectively apply borders to a docx table in Apache POI?
在 Microsoft Word 中,如果您转到 table 的属性,然后转到 "Borders and Shading" 部分,您将看到可以将边框应用于 table在它的8个方面。 顶部、底部、左侧、右侧、垂直中心、水平中心、左对角线和右对角线
如何使用 POI 有选择地打开它们?
当前 apache poi 4.1.0
class XWPFTable 为此提供了方法。
public void setTopBorder(XWPFTable.XWPFBorderType type,
int size,
int space,
java.lang.String rgbColor)
Set Top borders for table
Parameters:
type - - XWPFTable.XWPFBorderType e.g. single, double, thick
size - - Specifies the width of the current border. The width of this border is
specified in measurements of eighths of a point, with a minimum value of two
(onefourth of a point) and a maximum value of 96 (twelve points).
Any values outside this range may be reassigned to a more appropriate value.
space - - Specifies the spacing offset that shall be used to place this border
on the table
rgbColor - - This color may either be presented as a hex value (in RRGGBB format),
or auto to allow a consumer to automatically determine the border color
as appropriate.
有关可能的边框类型,请参阅 XWPFTable.XWPFBorderType。
完整示例:
import java.io.FileOutputStream;
import org.apache.poi.xwpf.usermodel.*;
public class CreateWordTableBorders {
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(3,3);
table.setWidth("100%");
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 3; col++) {
table.getRow(row).getCell(col).setText("row " + row + ", col " + col);
}
}
//set borders
table.setTopBorder(XWPFTable.XWPFBorderType.THICK_THIN_LARGE_GAP, 32, 0, "FF0000");
table.setBottomBorder(XWPFTable.XWPFBorderType.THICK_THIN_LARGE_GAP, 32, 0, "FF0000");
table.setLeftBorder(XWPFTable.XWPFBorderType.THICK_THIN_LARGE_GAP, 32, 0, "FF0000");
table.setRightBorder(XWPFTable.XWPFBorderType.THICK_THIN_LARGE_GAP, 32, 0, "FF0000");
table.setInsideHBorder(XWPFTable.XWPFBorderType.DOT_DASH, 16, 0, "00FF00");
table.setInsideVBorder(XWPFTable.XWPFBorderType.DOTTED, 24, 0, "0000FF");
paragraph = document.createParagraph();
FileOutputStream fileOut = new FileOutputStream("create_table.docx");
document.write(fileOut);
fileOut.close();
document.close();
}
}
在 Microsoft Word 中,如果您转到 table 的属性,然后转到 "Borders and Shading" 部分,您将看到可以将边框应用于 table在它的8个方面。 顶部、底部、左侧、右侧、垂直中心、水平中心、左对角线和右对角线
如何使用 POI 有选择地打开它们?
当前 apache poi 4.1.0
class XWPFTable 为此提供了方法。
public void setTopBorder(XWPFTable.XWPFBorderType type,
int size,
int space,
java.lang.String rgbColor)
Set Top borders for table
Parameters:
type - - XWPFTable.XWPFBorderType e.g. single, double, thick
size - - Specifies the width of the current border. The width of this border is
specified in measurements of eighths of a point, with a minimum value of two
(onefourth of a point) and a maximum value of 96 (twelve points).
Any values outside this range may be reassigned to a more appropriate value.
space - - Specifies the spacing offset that shall be used to place this border
on the table
rgbColor - - This color may either be presented as a hex value (in RRGGBB format),
or auto to allow a consumer to automatically determine the border color
as appropriate.
有关可能的边框类型,请参阅 XWPFTable.XWPFBorderType。
完整示例:
import java.io.FileOutputStream;
import org.apache.poi.xwpf.usermodel.*;
public class CreateWordTableBorders {
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(3,3);
table.setWidth("100%");
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 3; col++) {
table.getRow(row).getCell(col).setText("row " + row + ", col " + col);
}
}
//set borders
table.setTopBorder(XWPFTable.XWPFBorderType.THICK_THIN_LARGE_GAP, 32, 0, "FF0000");
table.setBottomBorder(XWPFTable.XWPFBorderType.THICK_THIN_LARGE_GAP, 32, 0, "FF0000");
table.setLeftBorder(XWPFTable.XWPFBorderType.THICK_THIN_LARGE_GAP, 32, 0, "FF0000");
table.setRightBorder(XWPFTable.XWPFBorderType.THICK_THIN_LARGE_GAP, 32, 0, "FF0000");
table.setInsideHBorder(XWPFTable.XWPFBorderType.DOT_DASH, 16, 0, "00FF00");
table.setInsideVBorder(XWPFTable.XWPFBorderType.DOTTED, 24, 0, "0000FF");
paragraph = document.createParagraph();
FileOutputStream fileOut = new FileOutputStream("create_table.docx");
document.write(fileOut);
fileOut.close();
document.close();
}
}