java操作word模板不借助第三方软件包

来源:互联网 发布:梦幻诛仙龙晶合成算法 编辑:程序博客网 时间:2024/06/11 07:17

本文针对不借助第三方软件包,纯手工编码,使用java操作word模板的童鞋。

先新建一个文件,命名为:word模板.rtf,然后用写字板打开,按你需要的文件样式设计好模板,然后重命名为.doc或.docx文件都可以。word的编码格式有许多种,比如xml编码的,相比较来说,如果不借助第三方软件包,rtf编码的最简单。可以借助第三方软件包的同学可以考虑使用jacob,不用你自己考虑编码的问题。

对于其中要替换的可变字段,最好用特殊符号“$”标识开始和结尾。例如:“公司名称”,在模板中使用字段“$CNAME$”代替,以免发生错误的替换。

如果是直接用word方式打开模板,将字段改为$CNAME$,,此时用EditPlus或者Ultraedit打开,发现$与CNAME之间可能有许多很明显的其他字符,需要删除,否则无法实现替换。

通过java io流就能读取word模板,但是执行文字替换,不能是简单的写入,要了解如何将汉字转换为rtf编码,下面的方法是将一个字符串content转换为rtf编码:

     char[] digital ="0123456789ABCDEF".toCharArray();

     StringBuffer sb = new StringBuffer("");

     byte[] bs = content.getBytes();//这里采用了电脑默认编码,最好指定编码为GBK,content即为待转的字符串。

     int bit;

     for(int i = 0; i < bs.length;i++) {

//上面通过getBytes()将汉字转为机内码,然后在这个循环体内的操作是将每个汉字的机内码的二进制表示转换为16进制数,并在前面拼上\’,就是该汉字在rtf中的编码表示。

        bit = (bs[i] & 0x0f0) >> 4;

        sb.append("\\'");

        sb.append(digital[bit]);

        bit = bs[i] & 0x0f;

        sb.append(digital[bit]);

     }

     return sb.toString();

返回的结果即为rtf可解析的汉字形式,比如,常见的一个例子:“电子与电脑”通过该方法转换为rtf编码就是:\'B5\'E7\'D7\'D3\'D3\'EB\'B5\'E7\'C4\'D4。

0 0
原创粉丝点击