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();
        }

}

}

时间: 2025-01-01 21:07:52

Java POI Word 写文档的相关文章

java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档

原文:java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档 代码下载地址:http://www.zuidaima.com/share/1550463239670784.htm 可以通过预先设置指定的excel和word模板,通过替换文档里面指定的标志来生成新的excel和word文档.excel的部分只是实现了简单的方法.word部分可以支持word2003和word2007格式.建议word使用07及其以上. 其实excel部分标签和jstl很像,而且支持循环等.word就支

从 Word 到 Docbook, 最后用 Pandoc, 让程序员爱上写文档

写文档一直是程序员非常讨厌的工作, 甚至和改需求一样令人厌烦. 在程序员眼里比写程序还难, 即便强制执行下来文档质量也很难让人满意. 相信大多数公司写文档都是用 Word, 笔者也是用了 Word 写了好几个项目的文档. 架构, 设计, 运维等好几份, 呵呵, 即便是写的再好, 交给客户也基本是不看的. 一个文档是项目组内好几个成员编写的, 大家各写各的模块, 各自的实现, 然后一起合并, 合并时修改字体, 字号, 目录等, 第一次合并还好, 再升级几个版本后, 大家改了哪里, 没改哪里, 根本

Java中按行写文档的方法

原文引用https://www.dazhuanlan.com/2019/08/25/5d622ab9a21fa/ 这篇文章总结了使用相关类写文档的操作 1. FileOutputStream 12345678910 public static void writeFile1() throws IOException { File fout = new File("out.txt"); FileOutputStream fos = new FileOutputStream(fout);

POI操纵EXCEL文档之导入文档(一)

             当前主流的后台管理系统,相信都会有文档导入导出的功能.而这其中用到的技术又是多种多样,有用POI框架,也有用JXLS技术的.技术只是手段,项目中实现功能最重要.今天主要说下如何利用POI技术操作EXCEL文档. POI 导入EXCEL文档: 1,首先,要导入EXCEL 文档,就必须要先有导入的模板文件,在这里,我提供好了制作好的EXCEL 模板文件提供下载:( EXCEL文档模板示例下载 ) 2,有了EXCEL 模板文件,就开始编写页面,并编写后台逻辑代码了: <%--

从程序员到项目经理(29):怎样写文档【转载】

在软件项目中,文档既是一项的重要成果,也是项目管 理的有力工具.通过文档,可以稳定.明确的传达信息,实现项目内的有效沟通.所以写文档对项目经理来说,是一项必备的技能. 然而很多项目经理害怕写文档,似乎这是一个很麻烦. 很困难的工作.其实会不会写文档,只是一种外在的表现,通过一个人写文档的情况,可以看出他对工作的理解程度,发现潜在的问题和风险.一个合格的项目经理,不但不会怕写文档, 而且会觉得这是一件简单.很自然的情,就像一个人吃饭.喝水一样,何难之有? (本人拙作<程序员第二步 -从程序员到项目

Java模拟实现百度文档在线浏览

Java模拟实现百度文档在线浏览 这个思路是我参考网上而来,代码是我实现. 采用Apache下面的OpenOffice将资源文件转化为pdf文件,然后将pdf文件转化为swf文件,用FlexPaper浏览. ok, A.下载OpenOffice (转换资源文件) B.下载JodConverter(调用OpenOffice) C.下载Swftools(Pdf2Swf) D.下载 FlexPaper(浏览swf文件) 这里我已经全部下载好了,大家只需要下载:http://down.51cto.com

POI导出EXCEL文档

package com.wiseweb.util.excel; import java.io.*; import java.util.*; import javax.swing.JOptionPane; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.HSSFColor; import com.wiseweb.pom.entity.BaiinfoPriceTime; public class Expo

在某公司时的java开发环境配置文档

1 开发环境配置 1.1.  MyEclipse 配置 1.MyEclipse下载地址:\\server\共享文件\backup\MyEclipse9.0 2.修改工作空间编码为UTF-8,如下图 3.注释配置 类注释配置:如下图 方法注释:如下图 2. 代码书写规范 2.1. Action 所有action类必须继承com.xx.util.BaseAction类,并且加上@Controller注解:对于service层注入,同意在set方法上写@Resource注解.例如 @Controlle

Java如何制作帮助文档(API)

Java如何制作帮助文档(API) 步骤如下: (1)写一个工具类 (2)对这个类加入文档注释 (3)用工具解析文档注释 javadoc工具 (4)格式 javadoc -d 目录 -author -version ArrayTool.java 制作帮助文档(API)出错问题解决: 找不到可以文档化的公共或受保护的类 这句话告诉我们对想要操作的类的权限不够.在类前面加上public即可. 如下图所示02: --------------------------------------- 将来做开发