根据RTF模版输出doc文件(草稿)

有个后缀名为rtf的文件(是word格式的一种):ZCAssetPurchase.rtf
这个文件里面有字段$attn   $orgId 等等。格式是$+字段,下面的代码可以把其中的$开头的字段替换成你要输入的数值。一般用于输出固定格式的表格,好进行打印。
注意:
若出现中午乱码:rtf文件的字体是“宋体”-->rtf的格式是utf-8
要用的jar包在下面可以下载
例子1:

package com.happysys.rtf;

import java.io.File;

import javax.servlet.http.HttpServletResponse;

import net.sourceforge.rtf.RTFTemplate;
import net.sourceforge.rtf.helper.RTFTemplateBuilder;

public class ZCAPAReport {
	public static void reportRTF() throws Exception{
		try {
	    	String rtfSource = "C:/ZCAssetPurchase.rtf";
	    	String docTarget = "D:/ZCAssetPurchase.doc";
	    	RTFTemplateBuilder builder = RTFTemplateBuilder.newRTFTemplateBuilder();
			RTFTemplate rtfTemplate = builder.newRTFTemplate();
			rtfTemplate.setTemplate(new File(rtfSource));
			rtfTemplate.put("apId", "a");//把rtfSource 文件中的"$apId"替换成"a"
			rtfTemplate.put("attn", "b");
			rtfTemplate.put("orgId", "c");
			rtfTemplate.put("applyTime", "d");
			rtfTemplate.put("contactTelephone", "e");
			rtfTemplate.put("assetName", "f");
			rtfTemplate.put("Unit", "g");
			rtfTemplate.put("amount", "h");
			rtfTemplate.put("model", "i");
			rtfTemplate.put("alternativeModel", "j");
//			rtfTemplate.merge(response.getWriter());
            File file=new File(docTarget);
			rtfTemplate.merge(file);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		try {
			reportRTF();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}


例子2:
package com.happysys.rtf;

import java.io.File;
import java.io.PrintWriter;
import java.util.Date;

import javax.servlet.http.HttpServletResponse;

import com.happysys.erp.webapps.framework.TypeProcessObject;
import com.happysys.erp.webapps.util.Util;

import net.sourceforge.rtf.RTFTemplate;
import net.sourceforge.rtf.helper.RTFTemplateBuilder;

public class ZCAPAReport {
	public static void reportRTF(String Id,String rtfSource, HttpServletResponse response,String empNo,
			int encodeMethod)throws Exception{
		response.setContentType("txt/rtf; charset=GBK");
    	TypeProcessObject obj = TypeProcessObject.findById("ZCAssetPurchaseAudit",Id);
		if(obj == null)
    		return;
		String name = obj.getObjectTypeName() + "_" + Id;
		response.setHeader("Content-disposition", "attachment; filename=" + name + ".rtf");
		try{
			String cols[]={"apaID","attn","orgId","applyTime","assetName","model","alternativeModel","Unit","qty",
					"vendorId1","vendorTel1","vendorAdd1","vendorOwner1","vendorPrice1",
					"vendorId2","vendorTel2","vendorAdd2","vendorOwner2","vendorPrice2",
					"vendorId3","vendorTel3","vendorAdd3","vendorOwner3","vendorPrice3"};
			RTFTemplateBuilder builder=RTFTemplateBuilder.newRTFTemplateBuilder();
			RTFTemplate rtfTemplate=builder.newRTFTemplate();
			rtfTemplate.setTemplate(new File(rtfSource));
			for(int i=0;i<cols.length;i++){
				String info = Util.doEncode(encodeMethod, Util.NVLL(obj.getShow(cols[i])));
				Object ob=obj.get(cols[i]);
				if(ob instanceof Date){
					info=Util.NVLL((Date)ob);
				}
				rtfTemplate.put(cols[i], info);
			}
			PrintWriter writer = response.getWriter();
            rtfTemplate.merge(writer);
            writer.flush();
            writer.close();
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}

你可能感兴趣的:(rtf,RTFTemplate,RTFTemplate,输入rtf文档,Java写rtf)