需要在 apache poi 的单个单元格中创建指数数据(数字)而不使用 paragraph.break

Need to create exponential data(number) in single cell in apache poi without using paragraph.break

我正在构建一个包含 8 列的行,并且 需要在 apache poi WORD 的单个单元格中创建指数数据(数字)而不使用 paragraph.break .

如果内容(2)需要上标,那么使用Microsoft Word有两种可能。要么真的上标对齐,要么将文本位置设置为远离文本基线。因为 (2) 必须在它自己的文本中 运行.

可以使用XWPFRun.setSubscript having VerticalAlign.SUPERSCRIPT.

实现上标对齐

可以使用 XWPFRun.setTextPosition 设置文本位置,其中 int val 是测量单位的半磅。

示例:

import java.io.FileOutputStream;

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

public class CreateWordSuperScript {

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

  XWPFDocument document= new XWPFDocument();
  XWPFParagraph paragraph;
  XWPFRun run;

  paragraph = document.createParagraph();
  run = paragraph.createRun();  
  run.setText("6  ");
  run=paragraph.createRun();  
  run.setText("(2)");
  run.setSubscript(VerticalAlign.SUPERSCRIPT); // superscript (2)

  paragraph = document.createParagraph();
  run=paragraph.createRun();  
  run.setText("6  ");
  run=paragraph.createRun();  
  run.setText("(2)");
  run.setTextPosition(11); // (2) position = baseline + 11 half pt ~ 5.5 pt

  FileOutputStream out = new FileOutputStream("word.docx"); 
  document.write(out);
  out.close();
  document.close();
 }
}