POI之根据模板导出word-yellowcong
来源:互联网 发布:C语言aver 编辑:程序博客网 时间:2024/06/02 06:55
根据模版导出word这个东西在实际开发中,是很常用的,我今天遇到坑了,就是如何根据word模版生成word。网上的代码好多都是坑爹,不是缺环境,就是却方法,所以我自己做了一个小例子。如果希望有图片替换的教程,大家可以给我留言
环境搭建
<!-- excel --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version></dependency><!-- word --><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-scratchpad</artifactId> <version>3.17</version></dependency><!-- xlsx --><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version></dependency><!-- xlsx 依赖这个包 --><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.17</version></dependency>
帐票模版
实现代码
package com.yellowcong.dao;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import org.apache.poi.hwpf.HWPFDocument;import org.apache.poi.hwpf.usermodel.Paragraph;import org.apache.poi.hwpf.usermodel.Range;/** * @version $Id$ */public class POITest { public static void main(String[] args) throws Exception, IOException { String file = "C:/Users/zhangrw/Desktop/test/指名業者指名理由書.doc"; //获取到文档 HWPFDocument doc = new HWPFDocument(new FileInputStream(file)); Range range = doc.getRange(); //查看段落数量 int paraNum = range.numParagraphs(); for(int i=0;i<paraNum;i++){ //获取段落 Paragraph paragraph =range.getParagraph(i); //当存在替换符号的情况 if(paragraph.text().indexOf("$")>-1){ paragraph.replaceText("$共通.契約名$", "yellowcong"); paragraph.replaceText("$共通.施工場所$", "yellowcong"); paragraph.replaceText("$案件.工事担当課$", "NB"); } } //保存doc文件 FileOutputStream out = new FileOutputStream(new File("C:/Users/zhangrw/Desktop/test/demo2.doc")); doc.write(out); out.close(); }}
优化后的代码
只需要提供输入、输出、替换的代码三个参数,就可以完成张票的生成
package com.yellowcong.dao;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.HashMap;import java.util.Map;import org.apache.poi.hwpf.HWPFDocument;import org.apache.poi.hwpf.usermodel.Paragraph;import org.apache.poi.hwpf.usermodel.Range;/** * * * @version $Id$ */public class POITest { /** * @param args * @throws Exception * @throws IOException */ public static void main(String[] args) throws Exception, IOException { String inFile = "C:/Users/zhangrw/Desktop/test/指名業者指名理由書.doc"; String outFile = "C:/Users/zhangrw/Desktop/test/demo3.doc"; //需要替换的模版代码 Map<String,String> map = new HashMap<String,String>(); map.put("$共通.契約名$", "yellowcong"); map.put("$共通.施工場所$", "yellowcong"); map.put("$案件.工事担当課$", "NB"); //获取修改模版后的代码 HWPFDocument doc = createTemplateDoc(inFile, map); //保存doc文件 saveDoc(doc,outFile); } /** * 输出文件 * @param doc * @param outPath */ private static void saveDoc(HWPFDocument doc,String outPath){ FileOutputStream out = null; try { out = new FileOutputStream(new File(outPath)); doc.write(out); } catch (Exception e) { // TODO 自動生成された catch ブロック e.printStackTrace(); }finally{ if(out != null){ try { out.close(); } catch (IOException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } } } } /** 根据代码的code,格式化输出数据 * @param file * @param map * @return * @throws IOException * @throws FileNotFoundException */ private static HWPFDocument createTemplateDoc(String file, Map<String, String> map) throws IOException, FileNotFoundException { //获取到文档 HWPFDocument doc = new HWPFDocument(new FileInputStream(file)); Range range = doc.getRange(); //查看段落数量 int paraNum = range.numParagraphs(); for(int i=0;i<paraNum;i++){ //获取段落 Paragraph paragraph =range.getParagraph(i); if(paragraph.text().indexOf("$")>-1){ for(Map.Entry<String, String> entry:map.entrySet()){ paragraph.replaceText(entry.getKey(), entry.getValue()); } } } return doc; }}
替换后效果
阅读全文
0 0
- POI之根据模板导出word-yellowcong
- POI模板导出word
- 【Apache POI】Java Web根据模板导出word文件
- POI根据模版导出word
- POI之Word文档读取-yellowcong
- POI之Word转化为Html-yellowcong
- POI之Word转化为Markdown-yellowcong
- POI根据模板导出Excle
- poi根据模板导出excel
- POI Word 模板导出教程
- poi使用模板导出word带图片
- 使用 poi 根据 word 模板生成 word 文件
- 使用 poi 根据 word 模板生成 word 文件
- 根据word模板导出数据(Aspose.Words)
- java根据ftl模板导出word文档
- Springboot 之 POI导出Word文件
- POI导出word 文档之 WordHelper
- 根据word模板生成word导出到页面
- NOIP2017过山车记
- 引导滤波的opencv实现以及解释
- 利用SecureCRT上传、下载文件(使用sz与rz命令),超实用!
- 04-树4 是否同一棵二叉搜索树(25 分)---陈越、何钦铭-数据结构-2017秋
- 在window server 2012上安装.net framework 3.5的方法
- POI之根据模板导出word-yellowcong
- Deeplab-v2 编译过程中的问题
- VIDEO SALIENT OBJECT DETECTION VIA CROSS-FRAME CELLULAR AUTOMATA笔记
- FineReport填报分页设置
- ABAQUS Error: Bad Material definition in element number
- 深度强化学习:入门(Deep Reinforcement Learning: Scratching the surface)
- 单链表删除某位置开始的连续k个数
- 【全集】自学动漫插画基本入门教程
- 获取本机外网地址和ip地址所在地查询