请自觉get重点。
POI的XWPFTable的方法总结:
1、 void addNewCol();为该表中的每一行添加一个新列
2、 void addRow(XWPFTableRow row);向表中添加新行
3、 boolean addRow(XWPFTableRow row, int pos);在pos位置向表添加新行
4、 XWPFTableRow createRow();创建一个新的XWPFTableRow对象,该对象的单元格数与当时定义的列数相同
5、 java.lang.String getBottomBorderColor();获取底部边框颜色
6、 int getBottomBorderSize();获取底部边框大小
7、 int getBottomBorderSpace();获取底部边框间距
8、 XWPFTable.XWPFBorderType getBottomBorderType();获取底部边框类型
9、 int getCellMarginBottom();
10、 int getCellMarginBottom();
11、 int getCellMarginLeft();
12、 int getCellMarginRight();
13、 int getCellMarginTop();
14、 int getColBandSize();
15、 BodyElementType getElementType();返回BodyElement表的类型
16、 java.lang.String getInsideHBorderColor();获取水平边框颜色
17、 int getInsideHBorderSize();获取水平边框大小
18、 int getInsideHBorderSpace();获取水平边框间距
19、 XWPFTable.XWPFBorderType getInsideHBorderType();获取水平边框类型
20、 java.lang.String getInsideVBorderColor();获取垂直边框颜色
21、 int getInsideVBorderSize(); 获取垂直边框大小
22、 int getInsideVBorderSpace();获取垂直边框间距
23、 XWPFTable.XWPFBorderType getInsideVBorderType();获取垂直边框类型
24、 java.lang.String getLeftBorderColor();获取左边框颜色
ps : 插入一行,并将某一行的样式复制到新增行
/**
* 在最底下插入一行,并将某一行的样式复制到新增行
*
* @param table
*/
public static void insertRow(XWPFTable table, int insertRow, int copyRow) {
// 在表格中指定的位置新增一行
XWPFTableRow targetRow = table.insertNewTableRow(insertRow);//新增行
// 获取需要复制行对象
XWPFTableRow copyRows = table.getRow(copyRow);//复制行
//复制行对象
targetRow.getCtRow().setTrPr(copyRows.getCtRow().getTrPr());
//或许需要复制的行的列
List<XWPFTableCell> copyCells = copyRows.getTableCells();
//复制列对象
XWPFTableCell targetCell = null;
for (int i = 0; i < copyCells.size(); i++) {
XWPFTableCell copyCell = copyCells.get(i);
targetCell = targetRow.addNewTableCell();
targetCell.getCTTc().setTcPr(copyCell.getCTTc().getTcPr());
if (copyCell.getParagraphs() != null && copyCell.getParagraphs().size() > 0) {
targetCell.getParagraphs().get(0).getCTP().setPPr(copyCell.getParagraphs().get(0).getCTP().getPPr());
if (copyCell.getParagraphs().get(0).getRuns() != null && copyCell.getParagraphs().get(0).getRuns().size() > 0) {
XWPFRun cellR = targetCell.getParagraphs().get(0).createRun();
cellR.setBold(copyCell.getParagraphs().get(0).getRuns().get(0).isBold());
}
}
}
}
ps : 跨行合并
/**
* 跨行合并
*
* @param table
* @param col
* @param fromRow
* @param toRow
*/
public static void mergeCellsVertically(XWPFTable table, int col, int fromRow, int toRow, String text) {
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);
}
cell.setText(text);
}
}
ps : 跨列合并
/**
* 跨列合并
*
* @param table
* @param row 所合并的行
* @param fromCell 起始列
* @param toCell 终止列
*/
public static void mergeCellsHorizontal(XWPFTable table, int row, int fromCell, int toCell) {
for (int cellIndex = fromCell; cellIndex <= toCell; cellIndex++) {
XWPFTableCell cell = table.getRow(row).getCell(cellIndex);
if (cellIndex == fromCell) {
cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
} else {
cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
}
}
}
ps : 单元格赋值
public static void setCellText2(XWPFTableCell cell, String text, String bgcolor, String textColor, int width) {
CTTc cttc = cell.getCTTc();
CTTcPr cellPr = cttc.addNewTcPr();
cellPr.addNewTcW().setW(BigInteger.valueOf(width));
CTTcPr ctPr = cttc.addNewTcPr();
CTShd ctshd = ctPr.addNewShd();
ctshd.setFill(bgcolor);
ctPr.addNewVAlign().setVal(STVerticalJc.CENTER);
cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);
XWPFParagraph para = cell.getParagraphs().get(0);
XWPFRun run = para.createRun();
run.setColor(textColor);
String[] textArr = text.split("s");
for (int i = 0; i < textArr.length; i++) {
if (i > 0) {
run.setColor(textColor);//CB4335
run.setFontSize(10);
run.addBreak();
}
run.setText(textArr[i]);
}
}