`

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

    以下是一个简单的VB6.0代码示例,展示如何打开RTF文件并执行查找和替换操作: ```vb Private Sub Command1_Click() Dim WordApp As Object Dim Doc As Object Set WordApp = CreateObject("Word.Application") ...

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

    在VB6.0环境下开发应用程序时,我们可能会遇到需要处理RTF(Rich Text Format)文件的需求,例如在文档中查找特定文本并进行替换。RTF是一种通用格式,它允许跨平台和跨应用程序交换格式丰富的文本数据。这个VB6.0源...

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

    在VB6.0环境下,开发一个程序来打开RTF(Rich Text Format)文件并执行查找与替换操作是一项常见的任务。RTF是一种通用的文本格式,它支持丰富的文本格式化,如字体、颜色和图像,因此在文档处理中广泛应用。下面...

    完美的RTF文本预览打印的源代码

    这个压缩包提供的源代码正是针对这个功能,允许用户在不打开实际文档的情况下预览RTF文本,并进行打印。 源代码中的关键组件可能包括以下几个部分: 1. **RTFPrintPreview.bas**: 这很可能是主程序模块,包含了...

    RichEdit2RTF_将RichEdit的内容存入RTF文件_

    在RTF文件中,图片是以嵌入的方式存储的,可以通过替换图片数据部分为压缩后的数据,同时更新相应的RTF控制码。 5. **网络传输优化**:如果需要在网络上传输RTF文件,压缩是一个好选择。可以使用ZIP或其他压缩算法...

    VC中RichEdit读取保存rtf文件

    如果你需要对图片进行特殊操作,如替换或添加图片,可能需要使用`CRichEditCtrl`的`EM_SETPROPERTY`消息和`IPropertySetStorage`接口。 5. **CFaceEditDemo示例**: 提供的`CFaceEditDemo`可能是一个包含以上功能...

    rtf简易编辑器 for vc

    在编程领域,处理RTF文件通常涉及到读取、修改和生成RTF代码。本项目"rtf简易编辑器 for vc"是一个基于Visual Studio C#开发的简单应用,主要用于编辑和生成RTF格式的数据。 在C#中,我们可以使用System.Windows....

    rtftemplate基于模板操作RTF格式文件

    例如,你可以创建一个包含公司报告结构的模板,然后在运行时替换具体的数值、日期和文本,从而快速批量生成多个定制化的报告。 将生成的RTF文件转换为Word文档是另一个有用的功能。由于RTF格式与Microsoft Word高度...

    对rtf类型的文件进行操作

    例如,以下代码演示了如何查找并替换RTF文件中的文本。 ```csharp richTextBox.Text = rtfContent; richTextBox.Find("搜索的文本", RichTextBoxFinds.None); richTextBox.SelectedText = "替换后的文本"; ``` 4. ...

    RichTextBox用法,RTF文件,rtf,文本文件导入RichTextBox

    下面的示例代码演示了如何打开一个对话框让用户选择RTF文件,并将其内容加载到`RichTextBox`: ```csharp OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "RTF files (*.rtf)...

    Rtf Editor rtf编辑器

    压缩包中的“Wordpad_src”可能包含了RTF编辑器的源代码示例,这为开发者提供了学习和参考的资源。通过阅读和分析源码,可以了解如何在实际项目中应用RtfEditor控件,以及如何扩展其功能。 6. **应用领域** RTF...

    RTF 编辑器(带翻译功能) VB 源代码

    3. **常规编辑**:用户可以进行文本输入、格式化、复制、粘贴、查找和替换等基本编辑操作。VB中的TextControl控件通常用于实现这些功能。 4. **自动翻译**:此编辑器的亮点在于其集成的翻译功能。通过读取`eng_chi....

    word模板替换,插入图片

    这个文件名可能是指包含所有相关代码和示例的Java项目,用于演示如何操作Office文档,包括上述的图片替换和条码插入等功能。解压后,可以直接导入到开发环境中运行,以便学习和实践。 总结来说,这个项目展示了...

    RtfTemplate实现Java生成word

    占位符的设计应当清晰,便于在代码中定位并替换。 2. **API使用**:RtfTemplate库提供了Java API,可以进行模板加载、数据绑定和文件生成。例如,`RtfTemplate.loadTemplate(filePath)`用于加载模板,`RtfTemplate....

    【原创】实现richtextbox 查找 替换 查找下一个 全部替换 功能 源码

    这通常涉及获取到查找的起始和结束位置,然后使用`RichTextBox.Rtf`属性的子字符串替换操作,将找到的文本替换为新的文本。 3. **查找下一个功能**: 在完成一次查找并替换后,用户可能希望继续查找下一个相同的...

    在RichTextBox中显示RTF格式文件

    这个控件不仅可以显示文本,还可以进行文本编辑,包括复制、粘贴、查找、替换等操作。 在C#中,显示RTF文件的步骤如下: 1. 首先,确保你有一个包含RTF数据的文件,例如"BetrayRTFDocument.rtf"。 2. 打开文件,...

    文本批量查找替换器

    "文本批量查找替换器"还支持多种格式的文件处理,这意味着无论是简单的文本文件(如.txt),还是富文本格式(如.rtf)、网页文件(如.html)或是编程语言的源代码文件(如.java、.py等),它都能轻松应对。...

    文字查找替换工具

    这涵盖了从纯文本文件(如.txt)到源代码文件(如.c、.java、.py等),甚至包括富文本格式(如.rtf、.docx等)。这样,无论用户需要在哪个文件类型中进行查找替换,都能轻松应对。 工具的小巧体积意味着它不会占用...

    ekrtf304_d7_delphi_rtf_3娱d7com_

    3. **RTF操作**:包括插入、删除、替换文本,改变字体、颜色、大小,以及添加图片等操作。 4. **兼容性**:该库设计时考虑了与各种RTF标准的兼容,确保处理的RTF文件可以在不同的系统和应用程序中正常工作。 5. **...

Global site tag (gtag.js) - Google Analytics