文章目录
一、文本
1、自定义段落
1)添加文本内容,设置文本样式
/**
* 添加文本内容
* @param doc
*/
public void createContentText(XWPFDocument doc) {
// 创建段落对象
XWPFParagraph paraX = doc.createParagraph();
docUtils.setParagraphStyle1(paraX);
XWPFRun runX = paraX.createRun();
//制表符
runX.addTab();
for(int i=0;i<100;i++) {
// 正文内容
runX.setText("正文");
//回车
if(i == 10) runX.addCarriageReturn();
//字体颜色
runX.setColor("533771");
//字体
runX.setFontFamily("宋体");
//字体大小
runX.setFontSize(12);
//删除线
// runX.setStrikeThrough(true);
//双删除线
// runX.setDoubleStrikethrough(true);
//阴影
// runX.setShadow(true);
//下划线
// runX.setUnderline(UnderlinePatterns.SINGLE);
//加粗
// runX.setBold(true);
//斜体
// runX.setItalic(true);
//设置背景颜色
setContentBackColor(runX);
}
}
2)设置背景颜色
/**
* 设置文本背景颜色
* @param run
*/
public void setContentBackColor(XWPFRun run) {
CTRPr rpr = run.getCTR().getRPr();
if(rpr == null) rpr = run.getCTR().addNewRPr();
CTShd shd = rpr.isSetShd() ? rpr.getShd() : rpr.addNewShd();
shd.setVal(STShd.Enum.forInt(38));
shd.setColor("FFFF00");
}
3)结果展示
二、表格
1、自定义表格
1) 创建表格
/**
* 插入表格
* @param doc
*/
public void createTable(XWPFDocument doc) {
//创建表格对象(4行3列)
XWPFTable table = doc.createTable(4, 3);
//设置表头
String[] names = {"序号", "名称", "备注"};
setRowContent(table, names, 0);
//设置行数据
String[] data1 = {"1", "小红", ""};
setRowContent(table, data1, 1);
String[] data2 = {"2", "小蓝", ""};
setRowContent(table, data2, 2);
String[] data3 = {"3", "小黑", ""};
setRowContent(table, data3, 3);
//样式
setTableStyle(table);
}
2)设置单元格数据
/**
* 设置单元格数据
* @param table
* @param strs
* @param rowIndex
*/
public void setRowContent(XWPFTable table, String[] strs, int rowIndex) {
//获取行对象
XWPFTableRow row = table.getRow(rowIndex);
if(row == null) row = table.createRow();
//单元格对象
XWPFTableCell cell = null;
for (int i = 0; i < strs.length; i++) {
cell = row.getCell(i);
cell.setText(strs[i]);
setCellStytle(cell);
}
}
3)设置单元格样式
public void setCellStytle(XWPFTableCell cell) {
CTTc cttc = cell.getCTTc();
CTPPr pr = cttc.getPList().get(0).addNewPPr();
//水平居中
pr.addNewJc().setVal(STJc.CENTER);
//垂直居中
cell.setVerticalAlignment(XWPFVertAlign.CENTER);
//单元格底纹
CTShd shd = pr.isSetShd() ? pr.getShd() : pr.addNewShd();
shd.setVal(STShd.CLEAR);
shd.setColor("auto");
shd.setFill("FF0000");
CTParaRPr rpr = pr.addNewRPr();
CTFonts fonts = rpr.addNewRFonts();
fonts.setAscii("宋体");
CTHpsMeasure size = CTHpsMeasure.Factory.newInstance();
size.setVal(new BigInteger(String.valueOf(28)));
rpr.setSz(size);
rpr.setSzCs(size); //字体大小
}
4)设置表格样式
public void setTableStyle(XWPFTable table) {
//边框
setTableBorder(table);
CTTbl ttbl = table.getCTTbl();
CTTblPr tblPr = ttbl.getTblPr() == null ? ttbl.addNewTblPr() : ttbl.getTblPr();
//表格在word中的对齐方式
CTJc jc = tblPr.addNewJc();
jc.setVal(STJc.Enum.forString("center"));
//首选宽度
CTTblWidth w = tblPr.getTblW() == null ? tblPr.addNewTblW() : tblPr.getTblW();
w.setType(STTblWidth.DXA);
w.setW(new BigInteger("5000"));
}
5)设置边框样式
public void setTableBorder(XWPFTable table) {
//表格边框
CTTblBorders borders = table.getCTTbl().getTblPr().addNewTblBorders();
//顶部
CTBorder top = borders.addNewTop();
//虚线
top.setVal(STBorder.Enum.forString("dashed"));
//宽度
top.setSz(new BigInteger("1"));
//颜色
top.setColor("0000FF");
//底部
CTBorder bottom = borders.addNewBottom();
//直线
bottom.setVal(STBorder.Enum.forString("single"));
//宽度
bottom.setSz(new BigInteger("2"));
//颜色
bottom.setColor("FF0000");
//左边
CTBorder left = borders.addNewLeft();
//双线
left.setVal(STBorder.Enum.forString("double"));
//宽度
left.setSz(new BigInteger("1"));
//颜色
left.setColor("666666");
//右边
CTBorder right = borders.addNewRight();
//双线
right.setVal(STBorder.Enum.forString("wave"));
//宽度
right.setSz(new BigInteger("1"));
//颜色
right.setColor("00FF00");
//内部水平线
CTBorder h = borders.addNewInsideH();
//双线
h.setVal(STBorder.Enum.forString("single"));
//宽度
h.setSz(new BigInteger("3"));
//颜色
h.setColor("666666");
//内部垂直线
CTBorder v = borders.addNewInsideV();
//双线
v.setVal(STBorder.Enum.forString("single"));
//宽度
v.setSz(new BigInteger("2"));
//颜色
v.setColor("00FFFF");
}
6)结果展示
2、使用模板
1)创建模板
创建一个word文件,如format.docx
2) 复制模板文件
3)往表格添加数据
public void useTempTable(XWPFDocument doc) {
int a = 0;
//获取模板表格
for (XWPFTable table : doc.getTables()) {
//获取列
for (int i = 0; i < table.getNumberOfRows(); i++) {
XWPFTableRow row = table.getRow(i);
for (XWPFTableCell cell : row.getTableCells()) {
//设置值
cell.setText(""+a);
a++;
}
}
}
}
4)结果展示
3、添加图片
public void createPicture(XWPFDocument doc, String picPath) throws InvalidFormatException, IOException {
// 创建段落对象
XWPFParagraph paraX = doc.createParagraph();
XWPFRun run = paraX.createRun();
FileInputStream is = new FileInputStream(picPath);
int picType = -1;
//判断图片类型
String suffix = picPath.substring(picPath.lastIndexOf(".")+1);
if(suffix.equals("png")) picType = XWPFDocument.PICTURE_TYPE_PNG;
else if(suffix.equals("jpg")) picType = XWPFDocument.PICTURE_TYPE_JPEG;
run.addPicture(is, picType, picPath, Units.toEMU(100), Units.toEMU(100));
is.close();
}