首先我用的技术是 poi

这是代码,一个工具类得调用

public class WordUtil {

/**

* 基于模板文件导出 word 文档,此方法主要是用来处理文档中需要替换的文本内容,对图片和表格无效

*

* @param templatePath

* 模板文件的路径,要求路径中要包含全名,并且模板文件只能是 07 及以上格式,即 docx 的文件

* @param destFilePath

* 导出文件的存放路径,包含文件名,例如,E:/test/小区公告.docx

* @param data

* 用来替换文档中预定义的字符串,要求预定义的字符串与 data 中的 key 值要相同

*/

public static void exportWordByTemplate(String templatePath,

String destFilePath, Map data) {

FileOutputStream out = null;

XWPFDocument doc = null;

try {

doc = new XWPFDocument(POIXMLDocument.openPackage(templatePath));

List listRun;

List listParagraphs = doc.getParagraphs();

for (int i = 0; i < listParagraphs.size(); i++) {

listRun = listParagraphs.get(i).getRuns();

for (int j = 0; j < listRun.size(); j++) {

if (data.get(listRun.get(j).getText(0)) != null) {

String val = data.get(listRun.get(j).getText(0));

listRun.get(j).setText(val, 0);

}

}

}

File destFile = new File(destFilePath);

if (!destFile.getParentFile().exists()) {

destFile.getParentFile().mkdirs();

}

out = new FileOutputStream(destFilePath);

doc.write(out);

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if (out != null)

out.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

/**

* 基于模板文件导出 word 文档,该方法支持03格式,但是此方法只能保留文档内容,不能保留文档中的样式和图片,建议将模板使用 07 的格式保存

*

* @param templatePath

* 模板文件的路径

* @param destFilePath

* 导出文件的存放路径,包含文件名,例如,E:/test/小区公告.doc

* @param data

* 用来替换文档中预定义的字符串,要求预定义的字符串与 data 中的 key 值要相同

*/

public static void export03WordByTemplate(String templatePath,

String destFilePath, Map data) {

try {

WordExtractor doc = new WordExtractor(new FileInputStream(

templatePath));

String content = doc.getText();

for (String key : data.keySet()) {

content = content.replaceAll(key, data.get(key));

}

byte b[] = content.getBytes();

ByteArrayInputStream bais = new ByteArrayInputStream(b);

POIFSFileSystem fs = new POIFSFileSystem();

DirectoryEntry directory = fs.getRoot();

directory.createDocument("WordDocument", bais);

FileOutputStream ostream = new FileOutputStream(destFilePath);

fs.writeFilesystem(ostream);

bais.close();

ostream.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) throws Exception {

Map maps = new HashMap();

maps.put("appellation", "万达公寓业主:");

maps.put(

"main_body",

"输出的内容");

maps.put("date", "2013年1月23日");

exportWordByTemplate("E:/sss 2.docx", "E:/test/test.doc", maps);

}

}

"E:/sss 2.docx 模板存放的地址。

E:/test/test.doc 新生成的地址。

取消

评论

java输出到文档如何排版_java word中表格怎么排版输出相关推荐

  1. adobe acrobat打开PDF文档 怎样实现类似Word中的拆分功能

    adobe acrobat 软件阅读PDF文档, 怎样实现Word中的窗口拆分功能呢? 答:打开pdf文件,找到菜单栏的窗口,选择拆分.就可以像word中拆分窗口看一个文档一样的功能了. 见下图: P ...

  2. java 接口文档的格式化_Java Word API - 读写转换处理DOC DOCX HTML PDF HTML格式

    Java Word 文档处理API 先进功能 执行邮件合并 使用邮件合并生成报表 插入格式户文本,段落,图像,表格以及其他内容到Word文档中 使用数据库的检索数据填充到Word文档中的表格 创建邮件 ...

  3. 计算机文档字体替换,在word中巧妙使用字体替换

    不知您是否遇到过这样的情况,当您使用Word文档时,很喜欢使用同一种字体来编辑文字,可如果是另外一台电脑没有你喜欢用的字体,希望把其中的某一种字体全部改为另一种字体,怎么解决呢?你会如何去完成这项工作 ...

  4. java怎么给文档加水印_Java 如何给Word文档添加多行文字水印

    前言 我在以往的文章中曾介绍过如何给Word文档添加文本水印和图片水印,及怎样删除文档中的水印.关于文本水印,之前那篇教程里主要指的是单行字体的水印,而在操作Word文档时,有时也会碰到需要添加多行文 ...

  5. 编辑中的word变成只读_文档设定密级,word中是这样加密,看一篇就精通了

    --word2016系列教程之"文档加密" 今天,开课前先普及一个知识.公文根据内容可以将密级设为不同的三级.第一,绝密公文,是指涉及国家核心秘密的内容的文件.第二,机密公文,是涉 ...

  6. 如何打开html的文档结构图,如何在Word中设置文档结构图

    在使用Word文档编辑大量文字内容时,有涉及到很多章节,有时候页数太多,很难操作前后快速链接起来,为了让整个文案的脉络承上启下,那如何在Word中设置文档结构图? 接下来小编跟大家介绍下如何设置wor ...

  7. word文档html图片不能移动,word中遇上图片不能移动的问题应该怎么解决

    图片是word的重要组成部分,那大家有没有遇上过图片插入word之后却无法移动的问题,这都是什么原因导致的呢?本文就来和大家介绍产生这一问题时的解决方法. 01更改图片环绕方式 如果想要移动图片,只需 ...

  8. java 前言中不允许有内容,Java解析XML文档给出了“序言中不允许的内容”。

    这个问题已经在这里有了答案: Prolog SAXParserException中不允许包含内容                                     5个答案 我正在用Java编写 ...

  9. java客户端api文档_Java 11:新的HTTP客户端API

    java客户端api文档 在Java 11中,已将最初在Java 9中引入的孵化HTTP客户端API进行了标准化. 它使连接URL,管理请求参数,cookie和会话更加容易,甚至支持异步请求和webs ...

最新文章

  1. Python Scipy 科学计算库
  2. Java判断字符串的开头和结尾
  3. 是学习Java还是Python?一张图告诉你!
  4. 安装win10和Linux双系统的个人经验
  5. linux下好用软件全记录
  6. bat脚本保存dir结果_MySQL备份脚本,应该这么写
  7. java设计模式2--工厂模式
  8. mysql强制安装参数_Mysql编译安装参数优化
  9. ISO常见的17大体系介绍
  10. 计算机并口地址定义,电脑并口(LPT)引脚定义
  11. 蓝牙协议保留(为了防止电脑内丢失)
  12. datagrid的deleteRow使用
  13. 高德离线地图vue-amap的api文档(1):创建地图,撒点等等
  14. 第三章 区块链率先敲开金融的大门
  15. 自然常数e的由来以及计算机为什么是二进制
  16. 内网主机通过公网域名解析访问内网服务器,存在什么问题,如何解决?
  17. 解析dump的几种方式
  18. 什么是阻抗匹配以及为什么要阻抗匹配
  19. SQL server数据库常用代码大全
  20. Java泛型方法返回值前面为什么要加上T

热门文章

  1. 2020~2022年软件测试的五大趋势
  2. ajaxForm和ajaxSubmit
  3. 企业微信方便做售后吗?企微SCRM_带你体验私域流量新玩法
  4. 3Dmax到UE4制作入门到精通
  5. 百度搜索限定时间_你不知道的搜索引擎那点事儿
  6. 机器学习中的算法:决策树模型组合之随机森林(Random Forest)
  7. 原生JS实现电子书阅读器
  8. html里面如何让文字居中显示,HTML如何让文字居中?
  9. 通联支付公司软件测试待遇,通联支付怎么样
  10. ARouter疑难杂症