首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Apache-POI设置Tab大小

使用Apache-POI设置Tab大小
EN

Stack Overflow用户
提问于 2018-09-25 11:40:46
回答 1查看 1.1K关注 0票数 0

我想在Word文档中通过Apache设置选项卡大小。

我有一个标题,应该在它的标题行中进行两次冲突,如下所示:

代码语言:javascript
复制
|    filed1                  ->                   field2    |

垂直线表示页面的边缘。我希望两个字段之间的选项卡都是大的,这样第一个字段在页面上是左对齐的,而右边的字段对页是对齐的。

使用Word本身非常容易,但我只知道如何用POI添加选项卡,而不是如何设置选项卡的宽度。

我试着用Apaches工具调查Word文件,但没有看到标签大小被埋在文件中的地方。

谢谢你的帮助,麦克

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-26 15:28:42

制表符是Word段落中的设置。虽然使用制表符是一件很常见的事情,也是文字处理中一个非常古老的过程,但如果不使用apache poi的底层ooxml对象,就不可能做到这一点。

示例:

注:制表机止回阀的测量单位是twips (二十英寸点)。

代码语言:javascript
复制
import java.io.FileOutputStream;

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

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTabStop;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTabJc;

import java.math.BigInteger;

public class CreateWordHeaderWithTabStops {

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

  XWPFDocument doc = new XWPFDocument();

  // the body content
  XWPFParagraph paragraph = doc.createParagraph();
  XWPFRun run = paragraph.createRun();  
  run.setText("The Body...");

  // create header
  XWPFHeader header = doc.createHeader(HeaderFooterType.FIRST);

  // header's first paragraph
  paragraph = header.getParagraphArray(0);
  if (paragraph == null) paragraph = header.createParagraph();
  paragraph.setAlignment(ParagraphAlignment.LEFT);

  // create tab stops
  int twipsPerInch = 1440; //measurement unit for tab stop pos is twips (twentieth of an inch point)

  CTTabStop tabStop = paragraph.getCTP().getPPr().addNewTabs().addNewTab();
  tabStop.setVal(STTabJc.CENTER);
  tabStop.setPos(BigInteger.valueOf(3 * twipsPerInch));

  tabStop = paragraph.getCTP().getPPr().getTabs().addNewTab();
  tabStop.setVal(STTabJc.RIGHT);
  tabStop.setPos(BigInteger.valueOf(6 * twipsPerInch));

  // first run in header's first paragraph, to be for first text box
  run = paragraph.createRun(); 
  run.setText("Left");
  // add tab to run
  run.addTab();

  run = paragraph.createRun(); 
  run.setText("Center");
  // add tab to run
  run.addTab();

  run = paragraph.createRun(); 
  run.setText("Right");

  FileOutputStream out = new FileOutputStream("CreateWordHeaderWithTabStops.docx");
  doc.write(out);
  doc.close();
  out.close();


 }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52497367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档