资源简介
应公司业务要求,需要在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个文件信息
相关资源
- 声明一个类Point,然后利用它声明一个
- FarPoint.Win.Spread.rar
- J2T-Reward Points:magento 最实用的分销积分
- 全国地铁坐标和名称,来源于百度附
- poi excel 模板读取 复制表 复制行且
- POI导入Excel并返回校验后的错误文件原
- POI使用Excel模板文件循环输出行并导出
- POI使用word模板文件循环输出行并导出
- Pointofix.rar
- 全国POI数据
- easypoi 模板导出
- pointCloud
- Checkpoint运维手册
- POI操作手册
- 2016年城市POI数据.rar
- Microsoft.Office.Interop.PowerPoint.rar
- 高博修改的orbslam2带点云程序修改后的
- POI兴趣点分类
- FarPoint.Win.Spread4.0注册机.zip
- Apache POI HSSF and XSSF 快速指南帮助文档
- NPOI 根据模版导出Excel
- bluepoint蓝牙上网0.89汉化版
- POI DOCX 完美文本、表格模板文字替换
- ROS 传感器消息及RVIZ可视化Laserscan和
- poi基于Excel模板导入导出注释详细,绝
- NPOI调用接口
- PointGrey Triclops 答疑
- ros中LaserScan 消息转化成PointCloud2d 的
- PCL点云库IterativeClosestPoint用法demo
- Primal and Dual Bregman Method
评论
共有 条评论