Java POI Word 写文档
package apache.poi;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.poifs.filesystem.DirectoryEntry;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
public class ExportDocTest {
public static void main(String[] args) {
String destFile="D:\\11.doc";
//#####################根据自定义内容导出Word文档#################################################
StringBuffer fileCon=new StringBuffer();
fileCon.append(" 张大炮 男 317258963215223\n" +
"2011 09 2013 07 3\n" +
" 二炮研究 成人\n" +
"2013000001 2013 07 08");
fileCon.append("\n\r\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
new ExportDocTest().exportDoc(destFile, fileCon.toString());
//##################根据Word模板导出单个Word文档###################################################
Map<String, String> map=new HashMap<String, String>();
map.put("name", "Zues");
map.put("sex", "男");
map.put("idCard", "200010");
map.put("year1", "2000");
map.put("month1", "07");
map.put("year2", "2008");
map.put("month2", "07");
map.put("gap", "2");
map.put("zhuanye", "计算机科学与技术");
map.put("type", "研究生");
map.put("bianhao", "2011020301");
map.put("nowy", "2011");
map.put("nowm", "01");
map.put("nowd", "20220301");
//注意biyezheng_moban.doc文档位置,此例中为应用根目录
HWPFDocument document=new ExportDocTest().replaceDoc("biyezheng_moban.doc", map);
ByteArrayOutputStream ostream = new ByteArrayOutputStream();
try {
document.write(ostream);
//输出word文件
OutputStream outs=new FileOutputStream(destFile);
outs.write(ostream.toByteArray());
outs.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*
* @param destFile
* @param fileCon
*/
public void exportDoc(String destFile,String fileCon){
try {
//doc content
ByteArrayInputStream bais = new ByteArrayInputStream(fileCon.getBytes());
POIFSFileSystem fs = new POIFSFileSystem();
DirectoryEntry directory = fs.getRoot();
directory.createDocument("WordDocument", bais);
FileOutputStream ostream = new FileOutputStream(destFile);
fs.writeFilesystem(ostream);
bais.close();
ostream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 读取word模板并替换变量
* @param srcPath
* @param map
* @return
*/
public HWPFDocument replaceDoc(String srcPath, Map<String, String> map) {
try {
// 读取word模板
FileInputStream fis = new FileInputStream(new File(srcPath));
HWPFDocument doc = new HWPFDocument(fis);
// 读取word文本内容
Range bodyRange = doc.getRange();
// 替换文本内容
for (Map.Entry<String, String> entry : map.entrySet()) {
bodyRange.replaceText("${" + entry.getKey() + "}", entry
.getValue());
}
return doc;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 操作表格
*/
public void OperateTable(){
try {
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(
"D:\\XBRL.doc"));
HWPFDocument doc = new HWPFDocument(fs);
Range range = doc.getOverallRange();
TableIterator ti = new TableIterator(range);
// Table table = null;
while (ti.hasNext()) {
System.out.println("Getting table!");
Table table = (Table)ti.next();
System.out.println("Number of rows: " + table.numRows());
for (int a = 0; a < table.numRows(); a++) {
TableRow row = table.getRow(a);
System.out.println("\tTable row number: " + a);
for (int b = 0; b < row.numCells(); b++) {
System.out.println("\t\tTable cell number: " + b);
TableCell tablecell = row.getCell(b);
for (int c = 0; c < tablecell.numParagraphs(); c++) {
Paragraph tablepara = tablecell.getParagraph(c);
for (int d = 0; d < tablepara.numCharacterRuns(); d++) {
CharacterRun run = tablepara.getCharacterRun(d);
System.out.println("\t\tText: \"" + run.text()
+ "\"");
}
}
}
}
System.out.println("\n");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Java POI Word 写文档的更多相关文章
- Java解析word,获取文档中图片位置
前言(背景介绍): Apache POI是Apache基金会下一个开源的项目,用来处理office系列的文档,能够创建和解析word.excel.ppt格式的文档. 其中对word文档的处理有两个技术 ...
- word写文档体会
1.找一个文档规范要求. 2.根据文档的规范要求调整正文的格式,标题1的格式,标题2的格式,标题3的格式,图表的格式,把没用的那些格式都删除掉. 3.图注表注后空格一行. 4.设置页眉页脚. 5.生成 ...
- Markdown: 用写代码的思维写文档
作者:吴香伟 发表于 2014/08/07 版权声明:可以任意转载,转载时务必以超链接形式标明文章原始出处和作者信息以及版权声明 本文不讲解Markdown的语法规则,只关注它带来的好处以及我使用的方 ...
- Word试卷文档模型化解析存储到数据库
最近在搞一套在线的考试系统,有许多人反映试题的新增比较麻烦(需要逐个输入),于是呼就整个了试卷批量导入了 poi实现word转html 模型化解析html html转Map数组 Map数组(数组的操作 ...
- php解析word,获得文档中的图片
背景 前段时间在写一个功能:用原生php将获得word中的内容并导入到网站系统中.因为文档中存在公式,图片,表格等,因此写的比较麻烦. 思路 大体思路是先将word中格式为doc的文档转化为docx, ...
- POI简易帮助文档系列--读取Excel文件
上篇博客通过简单的几行代码就学会了POI新建Excel文档的使用,本篇博客也从简单出发,通过查看POI的官网文档和一个简单的代码实例,学习怎么遍历出一个Excel文档的内容. package com. ...
- Java模拟实现百度文档在线浏览
Java模拟实现百度文档在线浏览 这个思路是我参考网上而来,代码是我实现. 采用Apache下面的OpenOffice将资源文件转化为pdf文件,然后将pdf文件转化为swf文件,用FlexPaper ...
- 《Java开发学习大纲文档》V8.0
<Java开发学习大纲文档>V8.0 第八版是以实战作为核心,同时也包含前面所有版本的精华部分,第八版加入的部分有云开发(阿里云OSS存储.(github)gitlab+docker网站自 ...
- 写文档太麻烦,试试这款 IDEA 插件吧!
前言 每次开发完新项目或者新接口功能等,第一件事就是提供接口文档.说到接口文档,当然是用 Markdown 了.各种复制粘贴字段,必填非必填,字段备注,请求返回示例等等.简直是浪费时间哇.所以想到了开 ...
随机推荐
- mysql查询在一张表不在另外一张表的记录
mysql查询在一张表不在另外一张表的记录 问题: 查询一个表(tb1)的字段记录不在另一个表(tb2)中 条件:tb1的字段key的值不在tbl2表中 -------- ...
- shell编程报错 [: missing `]'
NGINX_RATES=50 NGINX_BURST=3000 NGINX_PATH=/opt/srv/nginx/conf/nginx.conf BEE_PATH=/opt/srv/nginx/co ...
- QEMU-KVM中的多线程压缩迁移技术
导读 目前的迁移技术,都是通过向QEMUFILE中直接写入裸内存数据来达到传送虚拟机的目的端,这种情况下,发送的数据量大,从而会导致更高的迁移时间(total time)和黑宕时间(downtime) ...
- [POJ1338]Ugly Numbers
[POJ1338]Ugly Numbers 试题描述 Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequ ...
- win7+ubuntu双系统中卸载ubuntu方法
双系统中,如果要卸载ubuntu是不能够直接卸载的,需要使用一些特殊的方法.下面就为大家详细的介绍介绍. Step1 MBR引导区修复: 进入win7,下载个软件MbrFix,放在C:\windows ...
- Linux Apache 怎么修改工作模式
Apache默认为prefork模式,主要是考虑到稳定性的原因. 要切换到worker模式,则需要登录到linux上,进行如下操作: 进入/usr/sbin目录 cd /usr/sbin 将当前的pr ...
- Spring事务传播、隔离等级
事务传播 PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中.这是最常见的选择. PROPAGATION_SUPPORTS 支持当前事 ...
- 【OpenStack】OpenStack系列14之Dashboard定制开发
django概述 参考资料:http://blog.javachen.com/2014/01/11/how-to-create-a-django-site.html http://djangobook ...
- HDU2044 小蜜蜂斐波那契
一只小蜜蜂... Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- August 1st, 2016, Week 32nd Monday
Laughing is the most touching mask. 笑容是最动人的面具. I used to be very weclome in those I had met. And the ...