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项 ...
随机推荐
- 媒体智能-淘宝直播流媒体互动实践 | D2 分享视频+文章
背景:今天给大家带来的分享主题是<媒体智能-淘宝直播流媒体互动实践>,内容分为5个部分,首先看看在淘宝直播的直播间里主播可以怎样给用户拜年:然后具体讲如何制作一个手势拜年的特效:接着介绍我 ...
- 代码安全无忧—云效Codeup代码加密技术发展之路
简介: 从代码服务及代码安全角度出发,看看云效代码加密技术如何解决这一问题 代码数据存在云端,如何保障它的安全? 部分企业管理者对于云端代码托管存在一丝担心:我的代码存在云端服务器,会不会被泄露? 接 ...
- EDA 事件驱动架构与 EventBridge 二三事
简介: 事件驱动型架构 (EDA) 方兴未艾,作为一种 Serverless 化的应用概念对云原生架构具有着深远影响.当我们讨论到一个具体架构时,首当其冲的是它的发展是否具有技术先进性.这里从我们熟 ...
- [FAQ] IDE: Goland or PHPStorm 分屏操作
如图所示,文件上面点击右键,选择 Split Right 就可以在右侧分屏出编辑区. Refer:Goland下载 PHPStorm下载 Link:https://www.cnblogs.com/fa ...
- Qt Quick 工程创建
一.简介 Qt Quick是Qt框架中的一个模块,用于创建现代.响应式的用户界面.它基于QML(Qt Meta-Object Language)语言和Qt Quick Controls库,提供了一种声 ...
- SAP集成技术(一)历史
最近想读一本书<SAP Interface Management Guide>,打算边读边记录一些笔记.翻译主要由ChatGPT完成. 本文链接:https://www.cnblogs.c ...
- 【图形数据集】CIFAR-10 dataset数据集
文献引用:https://www.cs.toronto.edu/~kriz/cifar.html The CIFAR-10 dataset The CIFAR-10 dataset consists ...
- Jmeter-线程组下篇
线程组 线程组作为JMeter测试计划的核心组件之一,对于模拟并发用户的行为至关重要.线程组元件是整个测试计划的入口,所有的取样器和控制器必须放置在线程组下. 可以将线程组视为一个虚拟用户池,其中每个 ...
- vue子组件给父组件传值
子组件: <template> <div class="app"> <input @click="sendMsg" type=&q ...
- Linux中的which whereis locate
which which会在PATH环境中搜寻可执行文件 whereis Linux会将系统里面所有的文件都搜集到一个数据库文件中,whereis从这个数据库文件里面寻找文件 locate locate ...