`

rtf 替换 代码

    博客分类:
  • Java
 
阅读更多
package com.trt.core;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.apache.log4j.Logger;

public class RTFToWordUtil {

	
	/**
	 * 字符串转换为rtf编码
	 * 
	 * @param content
	 * @return
	 */
	public String strToRtf(String content) {

		StringBuffer sb = new StringBuffer("");
		try {
			char[] digital = "0123456789ABCDEF".toCharArray();
			byte[] bs = null;
			bs = content.getBytes("GB2312");
			int bit;
			for (int i = 0; i < bs.length; i++) {
				bit = (bs[i] & 0x0f0) >> 4;
				sb.append("\\'");
				sb.append(digital[bit]);
				bit = bs[i] & 0x0f;
				sb.append(digital[bit]);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return sb.toString();
	}

	/**
	 * 替换文档的可变部分
	 * 
	 * @param content 文档内容
	 * @param key 标识
	 * @param replacecontent 替换内容
	 * @return
	 */
	public String replaceRTF(String content, String key, String replacecontent) {
		String rc = strToRtf(replacecontent);
		
		String target = content.replace(key, rc);
		
		return target;
	}

	/**
	 * 半角转为全角
	 */
	public String ToSBC(String input) {
		char[] c = input.toCharArray();
		for (int i = 0; i < c.length; i++) {
			if (c[i] == 32) {
				c[i] = (char) 12288;
				continue;
			}
			if (c[i] < 127) {
				c[i] = (char) (c[i] + 65248);
			}
		}
		return new String(c);
	}

	/**
	 * 替换模板
	 * @param map 标识与替换内容
	 * @param sourceFilePath 模板路径
	 * @param targetFilePath 生成Word文档路径
	 */
	public void rgModel(Map<String, String> map, String sourceFilePath, String targetFilePath) {
		
		/* 字节形式读取模板文件内容,将结果转为字符串 */
		String sourcecontent = "";
		InputStream ins = null;
		try {
			ins = new FileInputStream(sourceFilePath);
			byte[] b = new byte[1024];
			if (ins == null) {
				//logger.info(RTFToWordUtil.class.getName()+":源模板文件不存在");
			}
			int bytesRead = 0;
			while (true) {
				bytesRead = ins.read(b, 0, 1024); // return final read bytes
				// counts
				if (bytesRead == -1) {// end of InputStream
					//logger.info(RTFToWordUtil.class.getName()+":读取模板文件结束");
					break;
				}
				// convert to string using bytes
				sourcecontent += new String(b, 0, bytesRead);

			}
		} catch (Exception e) {
			e.printStackTrace();
		}

		/* 修改变化部分 */
		String targetcontent = "";
		int i = 0;
		for (String key : map.keySet()) {
			String value = map.get(key);
			if (i == 0) {
				targetcontent = replaceRTF(sourcecontent, key, value);
			} else {
				targetcontent = replaceRTF(targetcontent, key, value);
			}
			i++;
		}
		/* 结果输出保存到文件 */
		try {
			FileWriter fw = new FileWriter(targetFilePath,
					true);
			PrintWriter out = new PrintWriter(fw);
			
			if (targetcontent.equals("") || targetcontent == "") {
				out.println(sourcecontent);
			} else {
				out.println(targetcontent);
			}
			out.close();
			fw.close();
			//logger.info(RTFToWordUtil.class.getName()+":生成文件 " + targetFilePath + " 成功");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {

		RTFToWordUtil oRTF = new RTFToWordUtil();

		Map<String, String> map = new HashMap<String, String>();
		map.put("$timetop$", "2008Y10M12D9H-2008Y10M12D6H");
		map.put("$info$", "idea");
		map.put("$idea$", "look");
		map.put("$advice$", "我们参照检验药品的方法");
		map.put("$infosend$", "到底发生大幅度");
		
		Date current = new Date();
		SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String targetname = sdf.format(current).substring(0, 4) + "年";
		targetname += sdf.format(current).substring(5, 7) + "月";
		targetname += sdf.format(current).substring(8, 10) + "日";
		targetname += sdf.format(current).substring(11, 13) + "时";
		targetname += sdf.format(current).substring(14, 16) + "分";
		targetname += sdf.format(current).substring(17, 19) + "秒";
		
		oRTF.rgModel(map, "d:\\YQ\\qp.rtf", "d:\\YQ\\t"+targetname+".doc");
		System.out.println("success");
	}

}
  • qp.rar (8 KB)
  • 下载次数: 1
分享到:
评论

相关推荐

    打开rtf文件,查找和替换里面的文件(VB6.0源代码编写)m nb

    打开rtf文件,查找和替换里面的文件(VB6.0源代码编写) 打开rtf文件,查找和替换里面的字符。

    打开rtf文件,查找和替换里面的文件(VB6.0源代码编写)

    打开rtf文件,查找和替换里面的文件(VB6.0源代码编写)

    打开rtf文件,查找和替换里面的文件(VB6.0代码编写)

    打开rtf文件,查找和替换里面的字符。 QQ223857666勾月

    c#多文档编辑器代码

    1.支持查找,替换,全部替换功能, 2,支持富文本编辑,RTF文件格式! 3,可以复制可以,粘贴,剪切,删除等快捷键和操作 4,多文本,可以同时处理多个文档,在窗口栏目可以对窗口进行整齐排列,美观整洁,高效 5,...

    SynWrite(代码编辑器) v6.38.2720.zip

    SynWrite免费的代码编辑器下载,完美支持中文,适合程序员编程使用,能对程序代码进行高亮显示,具有代码折叠、树形文件管理窗口。 SynWrite 主要特点 1.支持多语言语法高亮 2.高亮完全自定义 3.源代码结构树状...

    全能字符串批量替换机7.0

    广泛用于网站页面下载后的加工、网站的网页维护、用户指南和技术资料的批量更新、数据在不同系统中进行格式转换、源代码或资源文件修改等方面;使用本工具可极大地提高数据处理的效率,对数据库提供单位、情报搜集...

    开源源码编辑器 Synwrite 6.41.2780.zip

    SynWrite 将众多知名编辑器的精彩创意融入一个免费提供的产品中... 使用语法突出显示导出为RTF / HTML 便携式模式 …和更多! 启动后如果是英文,可以在菜单栏 Options 选项中设置语言中简体中文,设置后重启软件即可

    matlab提取文件要素代码-jirs:使用seed.rs和actix构建的简化的Jira克隆

    matlab提取文件要素代码使用seed.rs和actix构建的简化的Jira克隆 服务器:客户端: 特征 基于Actor的异步后端 使用WASM的超快速功能前端构建 邀请某人参加项目时显示消息 ...在RTF编辑器中插入代码 代码语法 选择MDE

    Rosinsky VCL Components Full Source V17.1

    但它们可以轻松替换为传统组件,而无需更改配置或程序代码。 高级VCL组件包括HTML Label、GroupBox Ex、StringGrid Ed、HTML ListView、TabControlEx + PageControlEx、Memo Ex、RichEdit、ComboBox Ex、ImageZoom、...

    powerpoint-source-code-format:使用pygments将语法突出显示应用于Powerpoint幻灯片中的源代码-Form source code

    对于某些使用RTF或HTML数据填充剪贴板的应用程序,粘贴源代码是可行的,但是使各种代码片段保持最新是很烦人的。 该插件添加了运行功能区UI元素,以将语法突出显示应用于选定的文本形状。 Hacky进行中警告:这可能...

    xcode 4.2 免证书真机调试配置

    1、根据《XCode 4.2 免证书调试之生成本机证书.rtf》制作代码签名证书 2、把“Info.plist”拷贝到“/Developer/Platforms/iPhoneOS.platform/”目录下,把原来的文件重命名 3、把“iPhoneOS Build System Support...

    灵者编辑器(GEdit) 2011.03.14

    8)、Base64编解码(邮件标准)、RTF丰富文本(码)到纯文本、获取数据摘要(md5、md4、crc32、md2、sha1)、十六进制和字串的互转、字符和字符代码的互转等等一键排版:支持行处理如去除空行、

    JavaWord类库操作API_Free Spire.Doc for Java_5.1.0

    查找、替换、高亮文字;数字签名;印章;图片添加、删除、编辑、提取;形状添加、编辑、删除;批注;表格;段落设置;域;打印;邮件合并;Word宏;添加条码、二维码;字体设置;文本框等。 2.应用场景:Word文档...

    灵者编辑器(GEdit) 2011.03.14.zip

    8)、Base64编解码(邮件标准)、RTF丰富文本(码)到纯文本、获取数据摘要(md5、md4、crc32、md2、sha1)、十六进制和字串的互转、字符和字符代码的互转等等一键排版:支持行处理如去除空行、插入空行、间隔空行、...

    Delphi开发技巧之-VCL

    使用代码移动StringGrid的行和列 使用圆形角显示控件 使用类名显示窗体 保存 装载TCheckListbox值 保存和装载TListView 保存和装载TTreeView 允许TDBGrid栏调整大小但防止移动 克隆控件 克隆窗体 列出控件的所有属性...

    Visual assist X 1626(带注册机)

     新的拼写引擎可以更加准确全面的检查您的拼写,推荐更好的替换操作,还可以处理缩写等语言结构。  改进的选项对话框,更加简单,新增了超链接选项。  其他——  新的安装程序支持更多环境  当您滚动列表框时,...

    Whole.Tomato.Visual.Assist.X.10.6.1823 2010年6月最新破解版

     新的拼写引擎可以更加准确全面的检查您的拼写,推荐更好的替换操作,还可以处理缩写等语言结构。  改进的选项对话框,更加简单,新增了超链接选项。  其他——  新的安装程序支持更多环境  当您滚动列表框时,...

    Whole.Tomato.Visual.Assist.X.v10.6.1822 2010年4月最新破解补丁

     新的拼写引擎可以更加准确全面的检查您的拼写,推荐更好的替换操作,还可以处理缩写等语言结构。  改进的选项对话框,更加简单,新增了超链接选项。  其他——  新的安装程序支持更多环境  当您滚动列表框时,...

    Whole.Tomato.Visual.Assist.X.10.7.1925.0 2012年12月14日 破解补丁 dll Cracked 最新破解版

     新的拼写引擎可以更加准确全面的检查您的拼写,推荐更好的替换操作,还可以处理缩写等语言结构。  改进的选项对话框,更加简单,新增了超链接选项。  其他——  新的安装程序支持更多环境  当您滚动列表框...

Global site tag (gtag.js) - Google Analytics