关于JAVA POI WORD操作的一些心得(少见)

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;
    }

不要随便转载啊!!!!!

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值