Word根据模板生成数据

本文介绍了如何在保持模板样式不变的情况下,根据模板在Word中替换或插入数据。提到的方法适用于.doc文件,对于.docx文件,建议参考链接提供的教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

就是有个模板,完全保留模板样式的情况下,在相应的地方更改或保留数据

第一个类:

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Map;
public class WordUtil {
//参数按顺序分别是模板路径,文件输出到的路径,替换的内容
public static void WriteWordByMB(String pathIn,String PathOut,Map<String, Object> changeMap){
		try {
			WordTemplate template = null;
			//先获取模板
			File filein = new File(pathIn);
			FileInputStream fileInputStream = null;		
			fileInputStream = new FileInputStream(filein);
			template = new WordTemplate(fileInputStream);
			//替换模板内容
			template.replaceTag(changeMap);
			//导出
			File fileout = new File(PathOut);
			FileOutputStream out;
			out = new FileOutputStream(fileout);
			BufferedOutputStream bos = new BufferedOutputStream(out);
			template.write(bos);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
}


里面调用的另一个类

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFTable;

import com.lowagie.text.Document;

/**
 * 仅支持对docx文件的文本及表格中的内容进行替换
 * 模板仅支持 ${key} 标签
 * @author JianQiu
 *
 */
public class WordTemplate {
	
	private static HWPFDocument document;
	
	/**
	 * 初始化模板内容
	 * @param inputStream 模板的读取流(doc文件)
	 * @throws IOException
	 */
	public WordTemplate(InputStream inputStream) throws IOException{
		document = new HWPFDocument(inputStream);
	}
	
	public void replaceTag(Map<String, Object> changeMap){
		Range range=document.getRange();
		for (Map.Entry<String,Object> entry: changeMap.entrySet()) {
			range.replaceText("${" + entry.getKey() + "}",
					String.valueOf(entry.getValue()));
        }
	}
	
	public void write(OutputStream outputStream) throws IOException{
		document.write(outputStream);
	}
}

以上方法只适用于doc

docx方法可以试试这个:https://blog.csdn.net/sadwxds/article/details/51331060

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值