java - 使用 XWPFRun 一次运行粗体和平面文本,写入 word

标签 java text ms-word apache-poi xwpf

是否可以在一次运行中将粗体设置为 true 和 false?

我现在有以下代码:

XWPFParagraph paragraph = nieuwDocument.createParagraph();

XWPFRun run = paragraph.createRun();
run.setBold(true);


for (XWPFParagraph paragraphs: paragraphList)
{   

    if(paragraphs.getStyle() !=null)
    {   
      if(paragraphs.getStyle().equals(kop) || paragraphs.getStyle().equals(tussenkop))
      { 
        run.addBreak();
        run.setText(paragraphs.getText());
        run.addCarriageReturn();
      }  
        if(paragraphs.getNumFmt() != null)
      { 
        //run.setBold(false)
        run.addTab();
        run.setText(paragraphs.getText());
        run.addCarriageReturn();
 }    
}

我尝试将 run.setBold(false) 添加到 if(paragraphs.getNumFmt() != null) 语句中,但随后所有文本再次变平。

我希望最后一个 if 语句的文本是扁平的,而第一个 if 语句的文本是粗体。

更新(有 2 次不同的运行)

如果我创建两次运行,我的文本顺序就会出错。

XWPFRun run = paragraph.createRun();
run.setBold(true);

XWPFRun runTwo = paragraph.createRun();
runTwo.setBold(false);

for (XWPFParagraph paragraphs: paragraphList)
  { 

    if(paragraphs.getStyle() !=null)
    {   
     if(paragraphs.getStyle().equals(kop) || paragraphs.getStyle().equals(tussenkop))
         {  
           run.addBreak();
           run.setText(paragraphs.getText());
           run.addCarriageReturn();
          }  

          if(paragraphs.getNumFmt() != null)
          {     
            runTwo.addTab();
            runTwo.setText(paragraphs.getText());
            runTwo.addCarriageReturn();
          }   

Right order (with first code)

Wrong order (second code with two runs

希望这能让它更清楚

最佳答案

我有一个解决方案给你。它有点硬编码,您应该明白了!

public static void textStyledInbetween(XWPFDocument document, String text1, String style1, String text2, String style2, String text3, String style3) {
    XWPFParagraph paragraph = document.createParagraph();
 
    XWPFRun run1 = paragraph.createRun();
    XWPFRun run2 = paragraph.createRun();
    XWPFRun run3 = paragraph.createRun();
    paragraph.setAlignment(ParagraphAlignment.BOTH);
    run1.setFontSize(12);
    run1.setFontFamily("Arial");
    run2.setFontSize(12);
    run2.setFontFamily("Arial");
    run3.setFontSize(12);
    run3.setFontFamily("Arial");

    if (text1 != null) {
        if (style1 != null) {
            if (style1.equals("Bold")) {
                run1.setBold(true);
            } else if (style1.equals("Italian")) {
                run1.setItalic(true);
            }
        }
        run1.setText(text1);
        run1.setBold(false);
        run1.setItalic(false);
    }

    if (text2 != null) {
        if (style2 != null) {
            if (style2.equals("Bold")) {
                run2.setBold(true);
            } else if (style2.equals("Italian")) {
                run2.setItalic(true);
            }
        }
        run2.setText(text2);
    }

    if (text3 != null) {
        if (style3 != null) {
            if (style3.equals("Bold")) {
                run3.setBold(true);
            } else if (style3.equals("Italian")) {
                run3.setItalic(true);
            }
        }
        run3.setText(text3);
    }
}

关于java - 使用 XWPFRun 一次运行粗体和平面文本,写入 word,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46544319/

相关文章:

java - 从 Java 返回 base64 字符串

Java:Jackson 数据绑定(bind)无法从 JSON 文件映射整个类

c# - 获取在网络驱动器上打开文件的用户的用户名 - Microsoft Office Style

c# - 如何通过Word文档修改 "walk"的内容?

java - C++ 等效于 Arraylist.get(index)

java - 如何从 32 字节原始私钥获取 java.security.PrivateKey ? (Secp256k1算法)

android - 自定义 View 中的 setText

php - 位于页面右侧的左对齐文本有问题吗?

html - 图片上方的文字

vba - 删除 Word 字段 VBA 在 Word 2013 中不起作用,在 Word 2010 中起作用