java 读word文档模板,同时往word文档里面插入数据
1.先看word文档模板 word文档先换成.xml格式。现阶段的word都支持另存为xml格式
2.看如下代码的作用。该段断码,只是传一个文件的路径。我们就能读取文件中的所有内容。
private static String getTemplateContext(String templatePath) {
try {
return FileUtils.readFileToString(FileUtils.getFile(templatePath), "UTF-8"); //获取传入文件路径, 这里即为该模板中的内容。
} catch (FileNotFoundException e) {
log.debug("读取模板文件异常");
return null;
} catch (IOException e) {
log.debug("读取模板文件异常");
return null;
}
}
3.由于2中获取的内容含有${.....} 我们需要将这些$转换成我们需要的内容。如下代码就可以满足我们的需求
这里说一下 templateContext为步骤2中获取的内容。
Map propertiesMap 是一个map对象,里面为键值对 就是模板里面的${..}的值。按照步骤一。我们可以认为map对象propertiesMap为
{zhongbianzhishu=12,xingzheng=13,guyuan=14,year=2015}
private static String replaceTemplateContent(String templateContext,
Map propertiesMap) {
int tagstart = 0;
int tagend = 0;
StringBuffer sb = new StringBuffer();
for (tagstart = templateContext.indexOf("${"); tagstart >= 0;) {
if (tagstart > tagend) {
String content = templateContext.substring(tagend, tagstart);
sb.append(content);
}
tagend = templateContext.indexOf('}', tagstart);
if (tagend > 0) {
String key = templateContext.substring(tagstart + 2, tagend).trim();
String value = propertiesMap.get(key)==null?"":propertiesMap.get(key).toString();
sb.append(value);
tagend++;
tagstart = templateContext.indexOf("${", tagend);
} else {
tagend = tagstart;
}
}
if (templateContext.length() > tagend) {
String end = templateContext.substring(tagend);
sb.append(end);
}
return sb.toString();
}
4.步骤4的作用就是讲步骤3的内容写入到我们自己定义的文本中
/**
* 将内容写入文件
* @param content
* @param filePath
*/
public static void writeFileWithEncoding(String content, String filePath,String encoding) {
try {
if (FileUtils.createFile(filePath)){
FileWriterWithEncoding fileWriter = new FileWriterWithEncoding(filePath,encoding, true);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.write(content);
bufferedWriter.close();
fileWriter.close();
}else{
log.info("生成失败,文件已存在!");
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 创建单个文件
* @param descFileName 文件名,包含路径
* @return 如果创建成功,则返回true,否则返回false
*/
public static boolean createFile(String descFileName) {
File file = new File(descFileName);
if (file.exists()) {
log.debug("文件 " + descFileName + " 已存在!");
return false;
}
if (descFileName.endsWith(File.separator)) {
log.debug(descFileName + " 为目录,不能创建目录!");
return false;
}
if (!file.getParentFile().exists()) {
// 如果文件所在的目录不存在,则创建目录
if (!file.getParentFile().mkdirs()) {
log.debug("创建文件所在的目录失败!");
return false;
}
}
// 创建文件
try {
if (file.createNewFile()) {
log.debug(descFileName + " 文件创建成功!");
return true;
} else {
log.debug(descFileName + " 文件创建失败!");
return false;
}
} catch (Exception e) {
e.printStackTrace();
log.debug(descFileName + " 文件创建失败!");
return false;
}
}
java 读word文档模板,同时往word文档里面插入数据相关推荐
- word使用dot模板以spring word 模板为例
word使用dot模板以spring word 模板为例 觉得有用的话,欢迎一起讨论相互学习~ 首先从spring官网中下载word模板, 这个dot文件不能直接打开,本质是word2000以前的遗留 ...
- VC++ 多文档模板(添加新文档模板)编程实例
现在假设要做一个VC++多文档程序,一个文档类型处理txt文件,一个文档类型处理图片文件: 新加一个Img的文档模板类型: 先新建一个多文档工程,名为duodocDemo1: 在菜单选择 插入-类: ...
- Apikit 自学日记:API 文档模板
我们可以通过创建API文档模板,并使用API文档模板来添加API文档,用于实现提高API文档创建效率,规范API文档格式的目的. 该功能是付费版本功能,需要升级为企业版方可使用. 创建API文档模板 ...
- l易度文档管理系统-文档模板设置
系统管理---文档模板 易度文档管理系统在系统管理提供了文档模板功能,用户可以选择预先设置的文档模板,作为新文档初始内容,也可以放置大量的文档模板文件,并且将这些模板授权给用户供其使用,用户可以选择自 ...
- word生成freemarker模板 并下载
java利用freemarker生成word模板,并在网页端下载 java后台生成word技术选型 freemarker引入项目 word生成xml模板 改写生成的xml模板 后台代码 前台代码 ja ...
- 大公司内部的标准开发文档模板下载
大公司内部的标准开发文档模板,包含项目研发过程文档,项目管理过程文档,机构支撑过程文档,需求文档模板.设计文档模板.编码实现文档,缺陷跟踪文档,质量保证文档,等等,又全,又好,又规范. 下载地址:ht ...
- java关于对于word或者pdf文件的批量下载实现,其中包括(Java实现创建word文档模板,根据模板导出word文档)
本次需求是,pdf是表格类型的文件,我这里使用了word模板进行处理.但由于是多个文件一起导出,因此全部放到一个目录底下进行打包下载. ## 整体思路 /*** 下载思路:* 1.查询出数据后:* 2 ...
- Java项目中利用Freemarker模板引擎导出--生成Word文档
应邀写的一篇文章:Java项目中利用Freemarker模板引擎导出--生成Word文档 资源下载:https://download.csdn.net/download/weixin_41367523 ...
- java 将ftl文件作为模板导出word文档
因为poi等输出word很麻烦,所以本文使用word编辑好模板,转成xml再转成ftl,在java中导入ftl模板,填充数据再生成为word下载或保存. 一.模板文档 1.在Word中编辑好word模 ...
最新文章
- Source Insight中的多行注释
- 处理时间_5_计算时间列所在年的周序号
- 《Spring Cloud 与 Docker 微服务架构实战》笔记
- 一个简单的mysql服务检测启动脚本
- 高性能计算机的基准测试程序包括,QX∕T 148-2020 气象领域高性能计算机系统测试与评估规范(可复制版)(40页)-原创力文档...
- Mysql学习总结(20)——MySQL数据库优化的最佳实践
- mysql的varchar与text对比
- 简述hdfs工作原理_HDFS 原理简述
- RTI_DDS自定义插件开发 6 监听者
- 黑帆第一季/全集Black Sails迅雷下载
- php yar 安装失败_php 安装yar扩展
- c语言日历时钟编程,基于DS1302的日历时钟(1602液晶显示DS1302时钟)C语言程序设计...
- 思科交换机序列号查询
- Python 三人斗地主手牌生成
- c语言求成绩中的最高分辨率大约是,一级msoffice全真机试试卷.docx
- 局域网、网段、子网的区别
- 用python画气球_452. 用最小的数量引爆气球(Python)
- LATEX编辑高数基础公式
- java 读取 application配置文件信息
- STM32F407基础总结系列(一)