为此,创建一个文本运行,并在这些文本运行中插入字段"PAGE \\\\* MERGEFORMAT"和/或"NUMPAGES \\\\* MERGEFORMAT" 。 这也是Word的GUI所做的。

...

run = paragraph.createRun();

run.setText("Page ");

paragraph.getCTP().addNewFldSimple().setInstr("PAGE \\* MERGEFORMAT");

run = paragraph.createRun();

run.setText(" of ");

paragraph.getCTP().addNewFldSimple().setInstr("NUMPAGES \\* MERGEFORMAT");

...

具有这些字段的文本运行当然也可以在表格单元格中。

完整的例子:

import java.io.FileOutputStream;

import org.apache.poi.xwpf.usermodel.*;

import org.apache.poi.wp.usermodel.HeaderFooterType;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSectPr;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPageMar;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;

import org.apache.xmlbeans.XmlCursor;

import java.math.BigInteger;

public class CreateWordHeaderFooterTable {

public static void main(String[] args) throws Exception {

XWPFDocument document = new XWPFDocument();

// the body content

XWPFParagraph paragraph = document.createParagraph();

XWPFRun run=paragraph.createRun();

run.setText("The Body:");

paragraph = document.createParagraph();

run=paragraph.createRun();

run.setText("Lorem ipsum.... page 1");

paragraph = document.createParagraph();

run=paragraph.createRun();

run.addBreak(BreakType.PAGE);

run.setText("Lorem ipsum.... page 2");

paragraph = document.createParagraph();

run=paragraph.createRun();

run.addBreak(BreakType.PAGE);

run.setText("Lorem ipsum.... page 3");

// create header start

XWPFHeader header = document.createHeader(HeaderFooterType.DEFAULT);

paragraph = header.getParagraphArray(0);

if (paragraph == null) paragraph = header.createParagraph();

paragraph.setAlignment(ParagraphAlignment.LEFT);

run = paragraph.createRun();

run.setText("The Header");

// create footer start

XWPFFooter footer = document.createFooter(HeaderFooterType.DEFAULT);

// create table in footer

paragraph = footer.getParagraphArray(0);

if (paragraph == null) paragraph = footer.createParagraph();

XmlCursor cursor = paragraph.getCTP().newCursor();

XWPFTable table = footer.insertNewTbl(cursor);

XWPFTableRow row = table.getRow(0); if (row == null) row = table.createRow();

int twipsPerInch = 1440;

table.getCTTbl().addNewTblGrid().addNewGridCol().setW(BigInteger.valueOf(7 * twipsPerInch));

for (int i = 0; i < 3; i++) {

XWPFTableCell cell = row.getCell(i); if (cell == null) cell = row.createCell();

CTTblWidth tblWidth = cell.getCTTc().addNewTcPr().addNewTcW();

tblWidth.setW(BigInteger.valueOf(((i==1)?3:2) * twipsPerInch));

tblWidth.setType(STTblWidth.DXA);

paragraph = cell.getParagraphs().get(0);

run = paragraph.createRun();

if (i == 0) {

paragraph.setAlignment(ParagraphAlignment.LEFT);

run.setText("Left footer text");

} else if (i == 1) {

paragraph.setAlignment(ParagraphAlignment.CENTER);

run.setText("Page ");

paragraph.getCTP().addNewFldSimple().setInstr("PAGE \\* MERGEFORMAT");

run = paragraph.createRun();

run.setText(" of ");

paragraph.getCTP().addNewFldSimple().setInstr("NUMPAGES \\* MERGEFORMAT");

} else if (i == 2) {

paragraph.setAlignment(ParagraphAlignment.RIGHT);

run.setText("Right footer text");

}

}

FileOutputStream out = new FileOutputStream("CreateWordHeaderFooterTable.docx");

document.write(out);

out.close();

document.close();

}

}

Java页码超出_java - 表中的页码 - 堆栈内存溢出相关推荐

  1. java中pack函数_java - Java函数pack(),JFrame大小 - 堆栈内存溢出

    我在使用函数pack()时遇到了一些问题,因为我知道它应该将JFrame的大小设置为最小. 这是我的杰作: import java.awt.*; import java.awt.event.*; im ...

  2. java光标位置无效_java - java.sql.SQLException:无效的光标位置 - 堆栈内存溢出

    我创建了一个简单的应用程序,使用户可以购买门票. 但是,每当我尝试购买" n"张门票时,都会遇到此错误. 现在,我知道在使用数据库进行操作时需要crs.next()语句,我已经使用 ...

  3. java 处理byte_java - 文件到Java中的byte [] - 堆栈内存溢出

    ===============>>#1 票数:1222 例: import java.io.File; import java.nio.file.Files; File file; // ...

  4. java comparator内部类_java - Java Comparator使用.reverseOrder()但内部类 - 堆栈内存溢出...

    我正在创建一个简单的程序来了解Java Comparator类. 我已经按顺序对一个Arraylist了排序,但现在我想按降序对列表进行排序,但是我在调​​用.reverseOrder()方法时遇到问 ...

  5. java 构造器 null_java - 主结尾处的Java构造函数用户输入在构造函数中为Null - 堆栈内存溢出...

    每次编写new Circle1()都会创建一个全新的对象,该对象与其他对象无关. 而当你这样做 Cercle1 pi = new Cercle1(); Cercle1 radius= new Cerc ...

  6. Java顺序栈的初始化_java - Java类变量初始化的顺序是什么? - 堆栈内存溢出

    在Java中,类变量按以下顺序初始化: 超类的静态变量 此类的所有静态变量都设置为其默认值 . 静态变量和静态初始化块,按声明顺序排列. 超类的实例变量 此类的所有实例变量都设置为其默认值 . 声明顺 ...

  7. java字符串转语音文件_java - Java文字转语音(Spring Boot) - 堆栈内存溢出

    我从事的项目是必须使用SpringBoot生成验证码. 我想要一个"文本到语音"功能,并且声音文件必须使用SpringBoot生成(否则这将是一个巨大的安全问题). 我生成了一个验 ...

  8. java enumerable_java - Java相当于C#的'Enumerable.Any' - 堆栈内存溢出

    使用Java 8,您可以编写如下内容: if (Stream.of(">", " ... } 出于好奇,我运行了一个基准来比较这个方法和一个正则表达式. 下面的代码 ...

  9. 组件文件已损坏或android内部模块,android - Android Q更新后,模块化系统组件在托管配置文件中不可用 - 堆栈内存溢出...

    在从工作配置文件配置的设备设置应用中将操作系统从Android 9升级到10后,请停止运行. java.lang.RuntimeException: Unable to start activity ...

最新文章

  1. java 匿名内部类
  2. 用户画像技术及方法论
  3. pyqt5中使用QtDesigner生成ui文件
  4. 静物摄影用光技巧_摄影技巧:冬天的阳光怎样拍才更美?
  5. 北京协和医学院823计算机原理,2017年北京协和医学院放射医学研究所(天津)823计算机原理考研题库...
  6. Struts自定义拦截器拦截器工作原理
  7. php5.3+for+linux,Centos 安装 nginx + php5.3
  8. gen文件下有两个R.java_android工程gen目录中R.java包名是怎么确定
  9. Linux FTP安装问题
  10. Windows 10 环境VS报表rdlc 中文乱码解决方案
  11. java语言构造顺序树_PAT-1086(Tree Traversals Again)Java语言实现+根据中序和前序遍历构建树并且给出后序遍历序列...
  12. 解决QML Window 增加radius效果
  13. pymol作图-设置label的字体
  14. python tornado异步_python tornado异步性能测试
  15. 如何在前台输出代码<xmp>,标签,并且是内容自动换行
  16. SRP-PHAT综述
  17. 黑苹果安装教程OC引导
  18. echart水滴_echarts 水球图
  19. 任天堂Switch会员+扩展包售价30美元太贵
  20. Error: Could not find tools necessary to compile a package/compilation failed for package

热门文章

  1. ubuntu18.04安装、使用、远程访问mariadb
  2. Guitar Pro中如何添加与删除音轨
  3. 最好用的SAT数学解题方法
  4. 新疆国省干线总里程突破2.9万公里
  5. 基于springboot校园二手交易市场源码 转转二手交易带视频部署教程和文档
  6. JavaWeb学习笔记(软件系统体系结构、Tomcat、Web应用、HTTP协议)
  7. 等比例缩放图片并填充图片为正方形(python附代码)
  8. AWR系列之一——AWR简介
  9. 异步电机速度估计-模型参考自适应MRAS法(补充)
  10. 分析:腾讯职级与薪酬体系