POI 使用替换字符方式进行模板生成word
1、Word生成
package com.tepper.common.util;import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;import org.apache.poi.POIXMLDocument;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;/*** Word写入器* * DocWriter* * @author 潘广伟* @Email p_3er@qq.com* @Date 2015-3-25 上午8:53:17* * @version 1.0.0* */
public class DocWriter {/*** 根据模板生成word文档* createByTemplate* * @param srcPath* @param map* @return * @exception * @since 1.0.0*/public static XWPFDocument createByTemplate(String srcPath,Map<String, String> map) {XWPFDocument document = null;try {document = new XWPFDocument(POIXMLDocument.openPackage(srcPath));Iterator it = document.getTablesIterator();while (it.hasNext()) {XWPFTable table = (XWPFTable) it.next();int rcount = table.getNumberOfRows();for (int i = 0; i < rcount; i++) {XWPFTableRow row = table.getRow(i);List<XWPFTableCell> cells = row.getTableCells();for (XWPFTableCell cell : cells) {for (Entry<String, String> e : map.entrySet()) {if (cell.getText().equals(e.getKey())) {/*** 清空原来的字符*/cell.removeParagraph(0);/*** 新的字符及样式*/XWPFParagraph paragraph = new XWPFParagraph(cell.getCTTc().addNewP(), cell);paragraph.setAlignment(ParagraphAlignment.LEFT);XWPFRun run = paragraph.createRun();run.setFontSize(14);run.setFontFamily("宋体");run.setText(e.getValue());}}}}}} catch (Exception e) {e.printStackTrace();}return document;}
}
2、通过response导出
Map<String, String> map = new HashMap<String, String>();map.put("${invoiceaccepter}", request.getParameter("invoiceaccepter"));map.put("${amountPrice}",request.getParameter("amountPrice")+"万");map.put("${invoicenum}","NO."+request.getParameter("invoicenum"));map.put("${count}",request.getParameter("count"));map.put("${invoiceTime}",request.getParameter("invoiceTime"));String srcPath = request.getSession().getServletContext().getRealPath("/") + "print_temp/invoice.docx";XWPFDocument document = DocWriter.createByTemplate(srcPath, map);response.setHeader("Content-disposition", "attachment;filename=ReturnReceipt.doc"); document.write(response.getOutputStream());
POI 使用替换字符方式进行模板生成word相关推荐
- 使用java Apache poi 根据word模板生成word报表
使用java Apache poi 根据word模板生成word报表 使用poi读取word模板,替换word中的{text}标签,并根据自定义标签循环生成表格或表格中的行. 代码示例下载:https ...
- Java使用POI通过模板生成Word
Java使用POI通过模板生成Word 前言 最近工作需要用到,所以记录下来以便查找. 一.概述 POI读写word使用的核心类是XWPFDocument.一个XWPFDocument代表一个docx ...
- apache poi使用例_使用java Apache poi 根据word模板生成word报表例子
[实例简介] 使用java Apache poi 根据word模板生成word报表 仅支持docx格式的word文件,大概是word2010及以后版本,doc格式不支持. 使用说明:https://b ...
- 使用word模板生成word文档的各类方案
使用word模板生成word文档的各类方案 生成word的各种方案 word另存xml进行后续处理 2003版本word(.doc)的xml处理并生成word 2007版本word(.docx)的xm ...
- java手动/按模板生成word与excel
目录 一.前言 二.生成word 1.使用Apache poi手动生成一个word (1)导入依赖 (2)手动生成一个包含表格的word 2.使用Apache poi 按模板生成一个简单的word ( ...
- 根据word模板生成word和PDF
根据word模板生成word和PDF 需求:有一个固定的合同模板,在vue前台填写指定的信息,替换合同模板指定的内容 我们使用的默认模板内容如图: 我们在前端填写的字段就是合同名称.项目名称和项目金额 ...
- JAVA实现模板word文档导入,Java依据word模板生成word文档之后台解析和实现及部分代码(一)...
Java根据word模板生成word文档之后台解析和实现及部分代码(一) 后台主要工作是解析XML定义的标签文件,并获取到数据集,放入到Map中,然后调用Jacob.jar中提供的相关方法来实现替换. ...
- freemarker根据模板生成word文档,换行
freemarker根据模板生成word文档,其它地方已经说的非常清除了,在此简单再说以下. 1.制作word模板,另存为xml文件.在此我另存为的时windows xml,它和windows 200 ...
- Android 使用模板生成Word文档,支持手机直接查看word
最近在项目工作中,碰到一个很棘手的需求,说是要在手机端根据模板生成word文档,而且不借助第三方的软件可以查看word文档,一开始听这个需求差不多蒙了,这要怎么做,为什么不把生成word文档这个工作放 ...
最新文章
- 0基础学怎么学习python
- 百练OJ:2742:统计字符数
- Comparable接口和Comparator接口的比较
- ios 侧滑返回停顿_iOS push侧滑返回功能实现方法
- Windows+Nginx+Tomcat搭建负载均衡和集群环境同时实现session共享(一)
- python缩进教学_Python缩进和选择学习
- 什么是IOC,IOC的优缺点及IOC的应用
- 第五篇:白话tornado源码之褪去模板的外衣
- 使用fileupload实现文件上传
- 【SpringBoot_ANNOTATIONS】自动装配 03 方法 构造器位置的自动装配
- 因子分析模型 - 因子分析法原理与代码实现 -(Python,R)
- 4.2 Branching Strategies
- 学生选课系统功能分析
- Python之科赫曲线绘制
- Unreal 4.24毛发
- Resharper快捷键使用
- C语言——typedef的用法
- 微营销:数字世界的第二张面孔
- 没有同理心_在设计上超越同理心
- K-S Hamiltonian以及自洽计算形式
热门文章
- java matlab 矩阵_如何在MATLAB中将函数应用于矩阵的每一行/列?
- 快速排名系统询火星推荐_搜狗网站快速排名系统 - 新站权重如何快速提升
- mysql远程无法登陆_无法远程登陆MySQL数据库几种解决办法
- 显示部分x_Linux 黑话解释:什么是显示服务器,用来做什么? | Linux 中国
- oracle号码段拆开,知道号段起止,如何选择该号段内的所有号码?
- 远程服务器系统管理,如何远程管理服务器系统(转载)
- springcloud alibab + sentinel1.8.1集成文档
- 【Linux】31. ffmpeg常用命令
- 【Linux】29.扫描本机同一局域网内 某端口开启 的主机
- Caffe学习系列(3):视觉层(Vision Layers)及参数