word模板替换
1.在进行word模板字符进行替换的时候,如果将要进行替换的标签${example}在NotePad++中写好,再将它直接粘贴到word模板的对应位置,那么在使用run对象进行遍历的时候,标签就会作为一个整体,不会被拆开。
2.如果时在记事本中写好,再从记事本中粘贴到word模板,那么在使用run对象进行遍历进行替换的时候,他会被拆分为${,example,}三个部分。
3.如果你是直接在word模板中直接编写的${example},那恕我直言,自己debug看看吧,我也不知道能被拆成啥样。
总之,模板中的替换标签,尽量不要在模板中进行编写改动,对,强调一遍,就是${example}这个东西。
word删除边框
记住一点:如果你删除某个单元格的边框,发现删不掉,要想想,这个单元格的某个边框和它相邻的单元格的边框是重合的,你得把他们同时删除。
word表格跨行断页
这个玩意儿网上基本没有,看到这个说明你赚了,我亏了。
row.setCantSplitRow(false);
记住这个方法,每个表格的行,调用一下这个方法,弄出来的表格就不会默认时跨行断页了。(row就是表格的行对象)
word生成超链接
word生成超链接,点击报错:“发生了异常错误”,如果你的链接在浏览器没有问题,那么,大概率是超链接太长了。
word生成标题
这是我写的一个小方法,有用就用
/**
* 设置标题目录及其样式
* @param document 目标文档
* @param styles 文档样式编辑器 XWPFStyles styles = document.createStyles();
* @param key 标题的ID
* @param headLevel 标题的级别
* @param size 字体大小
* @param color 字体颜色
* @param fontStyle 字体样式
*/
private void createThemeHead(XWPFDocument document, XWPFStyles styles, String key, int headLevel, int size, String color, String fontStyle) {
CTStyle ctStyle = CTStyle.Factory.newInstance();
ctStyle.setStyleId(key);
CTString ctString = CTString.Factory.newInstance();
ctString.setVal(key);//绑定id
ctStyle.setName(ctString); //将文本编辑器设置进入样式编辑器中
CTDecimalNumber ctDecimalNumber = CTDecimalNumber.Factory.newInstance();
ctDecimalNumber.setVal(BigInteger.valueOf(headLevel)); //可能是设置标题级别
ctStyle.setUiPriority(ctDecimalNumber); //将标题级别编辑器加入到样式编辑器中
CTOnOff ctOnOff = CTOnOff.Factory.newInstance();
ctStyle.setUnhideWhenUsed(ctOnOff); //使用时不隐藏,加入到样式编辑器
ctStyle.setQFormat(ctOnOff); //在格式栏进行显示
CTPPr ctpPr = CTPPr.Factory.newInstance();
ctpPr.setOutlineLvl(ctDecimalNumber); //定义样式给定级别的标题
ctStyle.setPPr(ctpPr);
XWPFStyle xwpfStyle = new XWPFStyle(ctStyle);
//字体大小
CTHpsMeasure ctHpsMeasure = CTHpsMeasure.Factory.newInstance();
ctHpsMeasure.setVal(BigInteger.valueOf(size));
CTHpsMeasure ctHpsMeasure1 = CTHpsMeasure.Factory.newInstance();
ctHpsMeasure1.setVal(BigInteger.valueOf(size));
CTFonts fonts = CTFonts.Factory.newInstance();
if(fontStyle == null || fontStyle.equals("")) {
fontStyle = "宋体";
}
fonts.setAscii(fontStyle); //字体
CTRPr ctrPr = CTRPr.Factory.newInstance();
ctrPr.setRFonts(fonts);
ctrPr.setSz(ctHpsMeasure);
ctrPr.setSzCs(ctHpsMeasure1); //字体大小
CTColor ctColor = CTColor.Factory.newInstance();
ctColor.setVal(hexToBytes(color));
ctrPr.setColor(ctColor); //字体颜色
xwpfStyle.getCTStyle().setRPr(ctrPr);
xwpfStyle.setType(STStyleType.PARAGRAPH);
styles.addStyle(xwpfStyle);
}
/**
* 颜色数据格式转换
* @param hexString
* @return
*/
public static byte[] hexToBytes(String hexString) {
HexBinaryAdapter adapter = new HexBinaryAdapter();
byte[] bytes = adapter.unmarshal(hexString);
return bytes;
}