Java POI 生成Word文档
maven的pom
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>ooxml-schemas</artifactId>
<version>1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/fr.opensagres.xdocreport/org.apache.poi.xwpf.converter.core -->
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>org.apache.poi.xwpf.converter.core</artifactId>
<version>1.0.6</version>
</dependency>
Java代码
1 package com.seawater.controller;
2
3 import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;
4 import org.apache.poi.xwpf.usermodel.*;
5 import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
6
7 import java.io.File;
8 import java.io.FileOutputStream;
9 import java.math.BigInteger;
10
11
12 /**
13 * Created by zhouhs on 2017/1/9.
14 */
15 public class WordExportController {
16
17 public static void main(String[] args)throws Exception {
18 //Blank Document
19 XWPFDocument document= new XWPFDocument();
20
21 //Write the Document in file system
22 FileOutputStream out = new FileOutputStream(new File("create_table.docx"));
23
24
25 //添加标题
26 XWPFParagraph titleParagraph = document.createParagraph();
27 //设置段落居中
28 titleParagraph.setAlignment(ParagraphAlignment.CENTER);
29
30 XWPFRun titleParagraphRun = titleParagraph.createRun();
31 titleParagraphRun.setText("Java PoI");
32 titleParagraphRun.setColor("000000");
33 titleParagraphRun.setFontSize(20);
34
35
36 //段落
37 XWPFParagraph firstParagraph = document.createParagraph();
38 XWPFRun run = firstParagraph.createRun();
39 run.setText("Java POI 生成word文件。");
40 run.setColor("696969");
41 run.setFontSize(16);
42
43 //设置段落背景颜色
44 CTShd cTShd = run.getCTR().addNewRPr().addNewShd();
45 cTShd.setVal(STShd.CLEAR);
46 cTShd.setFill("97FFFF");
47
48
49 //换行
50 XWPFParagraph paragraph1 = document.createParagraph();
51 XWPFRun paragraphRun1 = paragraph1.createRun();
52 paragraphRun1.setText("\r");
53
54
55 //基本信息表格
56 XWPFTable infoTable = document.createTable();
57 //去表格边框
58 infoTable.getCTTbl().getTblPr().unsetTblBorders();
59
60
61 //列宽自动分割
62 CTTblWidth infoTableWidth = infoTable.getCTTbl().addNewTblPr().addNewTblW();
63 infoTableWidth.setType(STTblWidth.DXA);
64 infoTableWidth.setW(BigInteger.valueOf(9072));
65
66
67 //表格第一行
68 XWPFTableRow infoTableRowOne = infoTable.getRow(0);
69 infoTableRowOne.getCell(0).setText("职位");
70 infoTableRowOne.addNewTableCell().setText(": Java 开发工程师");
71
72 //表格第二行
73 XWPFTableRow infoTableRowTwo = infoTable.createRow();
74 infoTableRowTwo.getCell(0).setText("姓名");
75 infoTableRowTwo.getCell(1).setText(": seawater");
76
77 //表格第三行
78 XWPFTableRow infoTableRowThree = infoTable.createRow();
79 infoTableRowThree.getCell(0).setText("生日");
80 infoTableRowThree.getCell(1).setText(": xxx-xx-xx");
81
82 //表格第四行
83 XWPFTableRow infoTableRowFour = infoTable.createRow();
84 infoTableRowFour.getCell(0).setText("性别");
85 infoTableRowFour.getCell(1).setText(": 男");
86
87 //表格第五行
88 XWPFTableRow infoTableRowFive = infoTable.createRow();
89 infoTableRowFive.getCell(0).setText("现居地");
90 infoTableRowFive.getCell(1).setText(": xx");
91
92
93 //两个表格之间加个换行
94 XWPFParagraph paragraph = document.createParagraph();
95 XWPFRun paragraphRun = paragraph.createRun();
96 paragraphRun.setText("\r");
97
98
99
100 //工作经历表格
101 XWPFTable ComTable = document.createTable();
102
103
104 //列宽自动分割
105 CTTblWidth comTableWidth = ComTable.getCTTbl().addNewTblPr().addNewTblW();
106 comTableWidth.setType(STTblWidth.DXA);
107 comTableWidth.setW(BigInteger.valueOf(9072));
108
109 //表格第一行
110 XWPFTableRow comTableRowOne = ComTable.getRow(0);
111 comTableRowOne.getCell(0).setText("开始时间");
112 comTableRowOne.addNewTableCell().setText("结束时间");
113 comTableRowOne.addNewTableCell().setText("公司名称");
114 comTableRowOne.addNewTableCell().setText("title");
115
116 //表格第二行
117 XWPFTableRow comTableRowTwo = ComTable.createRow();
118 comTableRowTwo.getCell(0).setText("2016-09-06");
119 comTableRowTwo.getCell(1).setText("至今");
120 comTableRowTwo.getCell(2).setText("seawater");
121 comTableRowTwo.getCell(3).setText("Java开发工程师");
122
123 //表格第三行
124 XWPFTableRow comTableRowThree = ComTable.createRow();
125 comTableRowThree.getCell(0).setText("2016-09-06");
126 comTableRowThree.getCell(1).setText("至今");
127 comTableRowThree.getCell(2).setText("seawater");
128 comTableRowThree.getCell(3).setText("Java开发工程师");
129
130
131 CTSectPr sectPr = document.getDocument().getBody().addNewSectPr();
132 XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(document, sectPr);
133
134 //添加页眉
135 CTP ctpHeader = CTP.Factory.newInstance();
136 CTR ctrHeader = ctpHeader.addNewR();
137 CTText ctHeader = ctrHeader.addNewT();
138 String headerText = "Java POI create MS word file.";
139 ctHeader.setStringValue(headerText);
140 XWPFParagraph headerParagraph = new XWPFParagraph(ctpHeader, document);
141 //设置为右对齐
142 headerParagraph.setAlignment(ParagraphAlignment.RIGHT);
143 XWPFParagraph[] parsHeader = new XWPFParagraph[1];
144 parsHeader[0] = headerParagraph;
145 policy.createHeader(XWPFHeaderFooterPolicy.DEFAULT, parsHeader);
146
147
148 //添加页脚
149 CTP ctpFooter = CTP.Factory.newInstance();
150 CTR ctrFooter = ctpFooter.addNewR();
151 CTText ctFooter = ctrFooter.addNewT();
152 String footerText = "http://blog.csdn.net/zhouseawater";
153 ctFooter.setStringValue(footerText);
154 XWPFParagraph footerParagraph = new XWPFParagraph(ctpFooter, document);
155 headerParagraph.setAlignment(ParagraphAlignment.CENTER);
156 XWPFParagraph[] parsFooter = new XWPFParagraph[1];
157 parsFooter[0] = footerParagraph;
158 policy.createFooter(XWPFHeaderFooterPolicy.DEFAULT, parsFooter);
159
160
161 document.write(out);
162 out.close();
163 System.out.println("create_table document written success.");
164 }
165
166
167 }
背景颜色
1 //设置段落背景颜色
2 CTShd cTShd = run.getCTR().addNewRPr().addNewShd();
3 cTShd.setVal(STShd.CLEAR);
4 cTShd.setFill("97FFFF");
Java POI 生成Word文档的更多相关文章
- POI生成WORD文档
h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...
- POI 生成 word 文档 简单版(包括文字、表格、图片、字体样式设置等)
POI 生成word 文档 一般有两种方法: ① word模板 生成word 文档 : ② 写代码直接生成 word 文档: 我这里演示的是第二种方法,即写代码生成 word文档,不多说废话,直接 ...
- POI生成word文档完整案例及讲解
一,网上的API讲解 其实POI的生成Word文档的规则就是先把获取到的数据转成xml格式的数据,然后通过xpath解析表单式的应用取值,判断等等,然后在把取到的值放到word文档中,最后在输出来. ...
- Java POI 解析word文档
实现步骤: 1.poi实现word转html 2.模型化解析html 3.html转Map数组 Map数组(数组的操作处理不做说明) 1.导jar包. 2.代码实现 package com.web.o ...
- [转载]Java动态生成word文档(图文并茂)
很多情况下,软件开发者需要从数据库读取数据,然后将数据动态填充到手工预先准备好的Word模板文档里,这对于大批量生成拥有相同格式排版的正式文件非常有用,这个功能应用PageOffice的基本动态填充功 ...
- [原创]Java动态生成word文档(图文并茂)
很多情况下,软件开发者需要从数据库读取数据,然后将数据动态填充到手工预先准备好的Word模板文档里,这对于大批量生成拥有相同格式排版的正式文件非常有用,这个功能应用PageOffice的基本动态填充功 ...
- java freemark生成word文档
1.下载freemarker-2.3.19.jar 2.把要填充的内容用 ${title},${no}代替 3.用word 打开,保存为2003xml 4.打开生成xml文件,看下有没有把表达式 ...
- java POI往word文档中指定位置插入表格
1.Service demo import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.a ...
- java poi 合并 word文档
import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import jav ...
- velocity模板技术生成word文档
本文介绍採用velocity技术在Java中生成word文档的方法. 1.新建一个word文档,编辑内容例如以下: 2.将上述word文档另存为htm格式的文件 3.新建一个Java Project项 ...
随机推荐
- 基于 eBPF 的 Kubernetes 可观测实践
简介: 阿里云可观测团队构建了 kubernetes 统一监控,无侵入式地提供多语言.应用性能黄金指标,支持多种协议,结合 Kubernetes 管控层与网络系统层监控,提供全栈一体式的可观测体验.通 ...
- Kubernetes API 编程利器:Operator 和 Operator Framework
本文整理自<CNCF x Alibaba 云原生技术公开课>第 24 讲,点击"阅读原文"直达课程页面. 关注"阿里巴巴云原生"公众号,回复关键词& ...
- [GPT] nodejs 什么情况下可以使用 import 来引入 export 的模块
在 Node.js 中,原生并不支持 ES6 的 import 语句来引入模块. 不过从 Node.js v12 开始,通过实验性功能(--experimental-modules)可以使用 .mjs ...
- [Go] golang 执行 Linux 系统 command
执行系统 shell 命令示例: fileDir := "files/"out, err := exec.Command("sh", "-c" ...
- OLAP系列之分析型数据库clickhouse集群部署(二)
一.环境准备 IP 配置 clickhouse版本 zookeeper版本 myid 192.168.12.88 Centos 7.9 4核8G 22.8.20.11 3.7.1 3 192.168. ...
- Nats集群部署
环境: 3台机器采用同样的目录名字和文件名称 服务器 192.168.10.30 192.168.10.31 192.168.10.32 nats版本2.9.15 配置文件 # 192.168.10. ...
- 登录信息localStorage存储
localStorage拓展了cookie的4K限制,与sessionStorage的唯一一点区别就是localStorage属于永久性存储,而sessionStorage属于当会话结束的时候,ses ...
- Codeforces Round 940 (Div. 2) and CodeCraft-23 (A-E)
A. Stickogon 题意:给定 \(n\) 根木棒长度,问最多构成几个多边形. 贪心,四边形不会优于三角形. submission B. A BIT of a Construction 题意:构 ...
- 通俗易懂的KMP理论讲解(含手求Next数组)
通俗易懂的KMP理论讲解(含手求Next数组) 1.KMP算法介绍 KMP算法的核心是利用匹配失败后的信息,通过一个 next 数组,保存模式串中前后最长公共子序列的长度,尽量减少模式串与主串的匹配次 ...
- HTTPS 是如何进行安全传输的 ?
概述 现代密码学对信息的处理主要离不开以下的三种形式: 摘要:主要用于数据校验,例如存储密码等,摘要是对信息进行单向的哈希,改变信息的原有形态,因为哈希函数的特点是易变性(即使微小的变化也会产生完全不 ...