java - 如何使用POI取消单词段落中西文间距自动调整

标签 java apache-poi

我使用XWPFDocumentXWPFParagraph类创建Word,但是中西文总是有差距,我取消了中西文间距的自动调整通过WORD在word段落中输入西文可以解决这个问题,但是如何使用代码来做到这一点;

我认为可以使用CTStyle,但我不知道该怎么做;

XWPFDocument doc = new XWPFDocument();
XWPFParagraph page = doc.createParagraph();
XWPFRun runs = page.createRun();
runs.setBold(false);
runs.setFontFamily("宋体");
runs.setFontSize(9);
runs.setText("12H型");

//export
OutputStream output = response.getOutputStream();
BufferedOutputStream bufferedOutPut = new BufferedOutputStream(output);
bufferedOutPut.flush();
doc.write(bufferedOutPut);
bufferedOutPut.close();

最佳答案

我怀疑您指的是 Configure text spacing between East Asian and Latin text 中描述的设置.

这些设置使用段落属性中的元素 autoSpaceDEautoSpaceDN 存储在 document.xml 中。

使用apache poi可以像这样完成:

import java.io.FileOutputStream;

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

public class CreateWordEnglishAndChinese {

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

  XWPFDocument document = new XWPFDocument();

  XWPFParagraph paragraph = document.createParagraph();
  if (paragraph.getCTP().getPPr() == null) paragraph.getCTP().addNewPPr();
  if (paragraph.getCTP().getPPr().getAutoSpaceDE() == null) paragraph.getCTP().getPPr().addNewAutoSpaceDE();
  paragraph.getCTP().getPPr().getAutoSpaceDE().setVal(org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff.OFF);
  if (paragraph.getCTP().getPPr().getAutoSpaceDN() == null) paragraph.getCTP().getPPr().addNewAutoSpaceDN();
  paragraph.getCTP().getPPr().getAutoSpaceDN().setVal(org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff.OFF);

  XWPFRun run = paragraph.createRun();
  run.setText("12H型:Type 12H");

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

 }
}

关于java - 如何使用POI取消单词段落中西文间距自动调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56680421/

相关文章:

java - 在 Scala 或 Java 中使用 Excel 语法格式化数字

java:如何使用 apache poi 创建数据透视表?

java - 已删除列表上的有效迭代器?

java - 致命异常 : Unable to start activity ComponentInfo{. ..} : java. lang.NullPointerException

java - 将 std::max 转换为 Java

java - Apache POI 编号列表

java - 无法使用 Apache POI 3.13 解析 CTDataModel

java - pdfbox 按照什么顺序解析 pdf 文件? (假设一页中有超过1列)

java - 比使用 If Else 循环更简单的方法来排序哪个字符串更大?

java - 显示服务器上的文件列表