这个是开发遇到的一个问题,记录一下
问题
修改前:
修改后:
表格大小不一致
解决办法
为每个单元格设置大小
// 创建一个表格
XWPFTable table = document.createTable(rows, cols);
for (int i = 0; i < rows; i++) {
XWPFTableRow row = table.getRow(i);
// 为单元格设置宽度
setBodyText(row.getCell(j),"",12.0,bold,true,9072);
}
// 合并单元格宽度为单个倍数
setBodyText(row.getCell(0),"",10.5,true,true,18144);
/**
* 设置表格内容
*/
private static void setBodyText(XWPFTableCell cell, String text,Double fontSize, boolean isBold,boolean isCenter,Integer width) {
CTTc cttc = cell.getCTTc();
//文字居中
CTTcPr cellPr = cttc.addNewTcPr();
if (width != null) {
cellPr.addNewTcW().setW(BigInteger.valueOf(width));
} else {
cell.setWidthType(TableWidthType.AUTO);
}
if (isCenter) {
cellPr.addNewVAlign().setVal(STVerticalJc.CENTER);
cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);
}
XWPFParagraph paragraph = cell.getParagraphs().get(0);
XWPFRun rIO = null;
if (paragraph == null) {
rIO = cell.addParagraph().createRun();
} else {
rIO = paragraph.createRun();
}
rIO.setText(text);
rIO.setFontFamily("仿宋_GB2312");
if (fontSize != null) {
rIO.setFontSize(fontSize);
} else {
rIO.setFontSize(12);
}
if (isBold) {
rIO.setBold(true);
}
}