资源简介
应公司业务要求,需要在world文档中生成表格,最开始同事使用的freemarker操作xml标签可以实现world中插入表格,
但是每次修改模板需要改xml文件,几万行中去找对应的标签然后修改,容易找错位置并且电脑非常卡,相当麻烦;,最后还是用poi操作world简单多了

代码片段和文件信息
package com.test;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.math.BigInteger;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.apache.xmlbeans.xmlCursor;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STJc;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;
/**
*
* 在world文档指定位置插入表格
*
*/
public class Test1 {
public static void main(String[] args) {
String templatePath = “D:\\ok\\demo.docx“;
InputStream in = null;
OutputStream out = null;
try {
in = new FileInputStream(templatePath);
XWPFDocument doc = new XWPFDocument(in);
//文本替换
Map param = new HashMap();
param.put(“PartyA“ “我是甲方“);
param.put(“PartyB“ “我是乙方“);
param.put(“date“ new SimpleDateFormat(“yyyy-MM-dd“).format(new Date()));
param.put(“text“ “合同内容合同内容合同内容合同内容合同内容合同内容合同内容合同内容合同内容合同内容合同内容合同内容合同内容“);
List allXWPFParagraphs = doc.getParagraphs();
for (XWPFParagraph xwpfParagraph : allXWPFParagraphs) {
List runs = xwpfParagraph.getRuns();
for (XWPFRun run : runs) {
String text = run.getText(0);
if (text!=null && text !=““) {
if (text.equals(“table“)) {//指定位置 用table作为标记
//表格生成 6行5列.
int rows = 6;
int cols = 5;
xmlCursor cursor = xwpfParagraph.getCTP().newCursor();
XWPFTable tableOne = doc.insertNewTbl(cursor);
//样式控制
CTTbl ttbl = tableOne.getCTTbl();
CTTblPr tblPr = ttbl.getTblPr() == null ? ttbl.addNewTblPr() : ttbl.getTblPr();
CTTblWidth tblWidth = tblPr.isSetTblW() ? tblPr.getTblW() : tblPr.addNewTblW();
CTJc cTJc = tblPr.addNewJc();
cTJc.setVal(STJc.Enum.forString(“center“));//表格居中
tblWidth.setW(new BigInteger(“9000“));//每个表格宽度
tblWidth.setType(STTblWidth.DXA);
//表格创建
XWPFTableRow tableRowtitle = tableOne.getRow(0);
tableRowtitle.getCell(0).setText(“标题“);
tableRowtitle.addNewTableCell().setText(“内容“);
tableRowtitle.addNewTableCell().setText(“姓名“);
tableRowtitle.addNewTableCell().setText(“日期“);
tableRow
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 318 2018-11-05 11:16 说明.txt
文件 789 2018-11-05 10:50 wroldAddTable\.classpath
文件 565 2018-11-05 10:48 wroldAddTable\.project
文件 88 2018-11-05 10:50 wroldAddTable\.settings\org.eclipse.core.resources.prefs
文件 243 2018-11-05 10:48 wroldAddTable\.settings\org.eclipse.jdt.core.prefs
文件 90 2018-11-05 10:48 wroldAddTable\.settings\org.eclipse.m2e.core.prefs
文件 580 2018-11-05 10:53 wroldAddTable\pom.xm
文件 4189 2018-11-05 11:05 wroldAddTable\src\main\java\com\test\Test1.java
文件 2002 2018-11-05 11:07 wroldAddTable\src\main\java\com\test\Test2.java
文件 7140 2018-11-05 11:05 wroldAddTable\target\classes\com\test\Test1.class
文件 2089 2018-11-05 11:07 wroldAddTable\target\classes\com\test\Test2.class
文件 107 2018-11-05 11:00 wroldAddTable\target\classes\me
文件 238 2018-11-05 11:00 wroldAddTable\target\classes\me
文件 580 2018-11-05 11:00 wroldAddTable\target\classes\me
文件 105364 2018-09-18 15:56 ok\demo.docx
文件 96374 2018-11-05 11:00 ok\demo2.docx
文件 96369 2018-11-05 11:03 ok\demo3.docx
目录 0 2018-11-05 11:08 wroldAddTable\target\classes\me
目录 0 2018-11-05 11:08 wroldAddTable\src\main\java\com\test
目录 0 2018-11-05 11:08 wroldAddTable\target\classes\me
目录 0 2018-11-05 11:08 wroldAddTable\src\main\java\com
目录 0 2018-11-05 11:08 wroldAddTable\target\classes\com\test
目录 0 2018-11-05 11:08 wroldAddTable\target\classes\me
目录 0 2018-11-05 11:08 wroldAddTable\src\main\java
目录 0 2018-11-05 11:08 wroldAddTable\target\classes\com
目录 0 2018-11-05 11:08 wroldAddTable\target\classes\me
目录 0 2018-11-05 11:08 wroldAddTable\src\main
目录 0 2018-11-05 10:50 wroldAddTable\src\test
目录 0 2018-11-05 11:08 wroldAddTable\target\classes
目录 0 2018-11-05 10:48 wroldAddTable\target\test-classes
............此处省略8个文件信息
相关资源
- New fixed point theorems of e-concave-convex m
- checkpoint的snmp及syslog配置.doc
- Symantec AntiVirus for Microsoft SharePoint产品
- 一张精美的PowerPoint甘特图模板.rar
- POI中文帮助文档附带api手册.zip
- PowerPoint2000支持库
- Existence of positive solutions for singular h
- D 6 R 4曲率校正,模块化图形函数和
- 狭义相对论变形中相互作用局部的时
- 使用半整数自旋发生器扩展Poinca
- Anti-de Sitter空间和AdS / CFT的两个P
- 从Poincaré代数的闭合中得
- Centering Conditions for the Poincar‘
- 一回路的κ-Poincaré不变
- Kubo-Martin-Schwinger权重的κ-Poin
- 由κ-Poincarér矩阵产生
- SPOI标记猪脂肪干细胞向成骨细胞分化
- 番茄工作法(pomotime)PowerPoint.rar
- poi 动态修改docx窗体域内容,并存为
- 2019版本poi 2019高德poi 2019百度poi
- 航迹大师 waypoint master 2.3
- googlemappoi内容解析
- 长沙市POI数据.zip
- case in point 中文版
- 浮点数IEEE754标准
- SpoilerAL汉化版
- Modeling of rapeseed at maturity stage using 3
- .net导入导出Excel文件
- poi导出导入封装使用注解建立实体与
- (改进版本)利用poi读取word模板文件
评论
共有 条评论