• 大小: 290KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: 其他
  • 标签: poi  

资源简介

应公司业务要求,需要在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.xml

     文件       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\meta-INF\MANIFEST.MF

     文件        238  2018-11-05 11:00  wroldAddTable\target\classes\meta-INF\maven\wroldAddTable\wroldAddTable\pom.properties

     文件        580  2018-11-05 11:00  wroldAddTable\target\classes\meta-INF\maven\wroldAddTable\wroldAddTable\pom.xml

     文件     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\meta-INF\maven\wroldAddTable\wroldAddTable

     目录          0  2018-11-05 11:08  wroldAddTable\src\main\java\com\test

     目录          0  2018-11-05 11:08  wroldAddTable\target\classes\meta-INF\maven\wroldAddTable

     目录          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\meta-INF\maven

     目录          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\meta-INF

     目录          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个文件信息

评论

共有 条评论