原文链接:https://www.longkui.site/program/java/xwpftable4/5708/
0.前言
前面的文章介绍了单元格合并的操作,这篇文章简单介绍一下设置字体大小、加粗、对齐方式、边框线、背景颜色等。
初始代码:
void testXWPFTable1(){
System.out.println(“开始执行”);
try {
//定义word
XWPFDocument doc = new XWPFDocument();
//在word中创建一个表格(2行,3列)
XWPFTable table = doc.createTable(4,4);
//第一行数据
table.getRow(0).getCell(0).setText(“1”);
table.getRow(0).getCell(1).setText(“张三”);
table.getRow(0).getCell(2).setText(“李四”);
table.getRow(0).getCell(3).setText(“王五”);
table.getRow(1).getCell(0).setText(“5”);
table.getRow(1).getCell(1).setText(“6”);
table.getRow(1).getCell(2).setText(“7”);
table.getRow(1).getCell(3).setText(“8”);
table.getRow(2).getCell(0).setText(“9”);
table.getRow(2).getCell(1).setText(“10”);
table.getRow(2).getCell(2).setText(“11”);
table.getRow(2).getCell(3).setText(“12”);
table.getRow(3).getCell(0).setText(“13”);
table.getRow(3).getCell(1).setText(“14”);
table.getRow(3).getCell(2).setText(“15”);
table.getRow(3).getCell(3).setText(“16”);
//导出
String path = “C:”; //文件路径
String name = “test1”; //文件名
path = path + “/” + name + “.docx”;
File file = new File(path);
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream out = new FileOutputStream(file);
doc.write(out);
}catch (IOException e){
e.printStackTrace();
}
}
1.设置字体、大小、是否加粗
我们一般用下面的代码来设置单元格内字体、字体大小、字体是否加粗。
run.setFontSize(20); //设置字体大小 14
run.setFontFamily(“宋体”); //设置字体为宋体
run.setBold(true); //设置加粗
第一种设置方式并不生效
//下面不生效
XWPFRun run = table.getRow(0).getCell(1).getParagraphs().get(0).createRun();
run.setFontSize(20); //设置字体大小 14
run.setFontFamily(“宋体”); //设置字体为宋体
run.setBold(true); //设置加粗
第二种设置方式生效:
//生效
XWPFRun run1 = table.getRow(0).getCell(2).getParagraphArray(0).getRuns().get(0);
run1.setFontSize(11); //设置字体大小 14
run1.setFontFamily("楷体"); //设置字体为宋体
run1.setBold(true); //设置加粗
table.getRow(0).setHeight(300); //设置高度
效果:
可以看出,第二种形式生效了。
2.设置单元格大小
全局设置:
table.getCTTbl().getTblPr().getTblW().setW(new BigInteger("9000")); //测试不生效
table.getCTTbl().addNewTblPr().addNewTblW().setW(new BigInteger("9000")); //测试生效
效果:
单独设置某个单元格的宽度
table.getRow(1).getCell(0).getCTTc().getTcPr().addNewTcW().setW(BigInteger.valueOf(122)); //设置宽度 ,报错
table.getRow(1).getCell(1).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(5000)); //设置宽度,生效
效果:
3.设置对齐方式
table.getRow(1).getCell(0).getParagraphArray(0).setAlignment(ParagraphAlignment.CENTER); //设置水平居中
table.getRow(1).getCell(1).getParagraphArray(0).setAlignment(ParagraphAlignment.LEFT); //设置左对齐
table.getRow(1).getCell(2).getParagraphArray(0).setAlignment(ParagraphAlignment.RIGHT); //设置右对齐
table.getRow(1).getCell(3).getParagraphArray(0).setVerticalAlignment(TextAlignment.CENTER); //设置垂直居中
效果:
4.设置边框线
设置全局
//全局设置
CTTblPr tblpro = table.getCTTbl().getTblPr();
CTTblBorders borders = tblpro.addNewTblBorders();
borders.addNewBottom().setVal(STBorder.SINGLE);
borders.addNewLeft().setVal(STBorder.NIL); //设置左侧无边框
borders.addNewRight().setVal(STBorder.SINGLE);
borders.addNewTop().setVal(STBorder.SINGLE);
borders.addNewInsideH().setVal(STBorder.SINGLE);
borders.addNewInsideV().setVal(STBorder.SINGLE);
效果:
单独设置某个单元格:
table.getRow(1).getCell(1).getCTTc().getTcPr().addNewTcBorders().addNewRight().setVal(STBorder.NIL);//设置无边框, 测试报错,无法通过
table.getRow(1).getCell(2).getCTTc().addNewTcPr().addNewTcBorders().addNewLeft().setVal(STBorder.NIL); //设置无边框,office测试不生效,wps测试生效
测试了两种方法,其中第一种直接报错,无法通过测试,奇怪的是第一种在另一个项目(Spring MVC)中正常显示,但是在这个新搭建的项目中直接报错。
第二种方法,测试后,发现在wps中生效,但是在office中不生效,效果如下:
5.设置背景颜色
table.getRow(1).getCell(1).getCTTc().addNewTcPr().addNewShd().setFill(“AAABBB”);
效果:
6.总结
实践了很多方法,发现在office中和wps中的效果不完全一致。