`
fatedgar
  • 浏览: 131616 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

根据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();
		}
	}
}
  • rtfjar.rar (1.1 MB)
  • 描述: rtf的jar包
  • 下载次数: 105
分享到:
评论
3 楼 fatedgar 2012-10-15  
best_yuan 写道
好像运行不了,缺少spring包

没啊,我记得没用到spring包吧




syfye 写道
请问Linux下中文乱码,遇到过吗?如何解决?

Linux里面没测试过,我在window环境下测试的,按我说的那么做解决不了吗?
那个rtf文件用textpad打开,存为utf-8格式,rtf里面的字体都改为宋体
2 楼 syfye 2012-09-14  
请问Linux下中文乱码,遇到过吗?如何解决?
1 楼 best_yuan 2012-07-12  
好像运行不了,缺少spring包

相关推荐

Global site tag (gtag.js) - Google Analytics