Java 如何使用ApachePOI在docx中编写混合文本(普通文本和下标文本)?

Java 如何使用ApachePOI在docx中编写混合文本(普通文本和下标文本)?,java,ms-word,apache-poi,Java,Ms Word,Apache Poi,我会尽力解释我需要什么。 我有一个包含正常大小和下标文本(例如oxygene O2)的文本,我想使用ApachePOI3.9库将其写入docx文件。我要么得到所有文本的正常大小,要么得到下标。有办法吗? 这是我的密码: import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.

我会尽力解释我需要什么。 我有一个包含正常大小和下标文本(例如oxygene O2)的文本,我想使用ApachePOI3.9库将其写入docx文件。我要么得到所有文本的正常大小,要么得到下标。有办法吗? 这是我的密码:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.VerticalAlign;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class ApachePOI {    
    public static void main(String[] args) {
    XWPFDocument document = new XWPFDocument();
    XWPFParagraph paragraph = document.createParagraph();
    XWPFRun run = paragraph.createRun();

    run.setText("Oxygene - O");
    run.setSubscript(VerticalAlign.SUBSCRIPT);
    run.setText("2");

    try {
        FileOutputStream fos = new FileOutputStream("test.docx");
        document.write(fos);
        fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
是的,试试这个代码-

import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.VerticalAlign;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class ApachePOI {    
    public static void main(String[] args) {

    XWPFDocument document = new XWPFDocument(); 
    XWPFParagraph paragraphOne = document.createParagraph();

    paragraphOne.setAlignment(ParagraphAlignment.CENTER);

    XWPFRun paragraphOneRunOne = paragraphOne.createRun();
    paragraphOneRunOne.setFontSize(25);
    paragraphOneRunOne.setBold(true);
    paragraphOneRunOne.setText("Oxygene - O");

    XWPFRun paragraphOneRunTwo = paragraphOne.createRun();
    paragraphOneRunTwo.setFontSize(17);
    paragraphOneRunTwo.setBold(true);
    paragraphOneRunTwo.setSubscript(VerticalAlign.SUBSCRIPT);
    paragraphOneRunTwo.setText("2");

    try {
        FileOutputStream fos = new FileOutputStream("C://test.docx");
        document.write(fos);
        fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
是的,请尝试此代码-

import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.VerticalAlign;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class ApachePOI {    
    public static void main(String[] args) {

    XWPFDocument document = new XWPFDocument(); 
    XWPFParagraph paragraphOne = document.createParagraph();

    paragraphOne.setAlignment(ParagraphAlignment.CENTER);

    XWPFRun paragraphOneRunOne = paragraphOne.createRun();
    paragraphOneRunOne.setFontSize(25);
    paragraphOneRunOne.setBold(true);
    paragraphOneRunOne.setText("Oxygene - O");

    XWPFRun paragraphOneRunTwo = paragraphOne.createRun();
    paragraphOneRunTwo.setFontSize(17);
    paragraphOneRunTwo.setBold(true);
    paragraphOneRunTwo.setSubscript(VerticalAlign.SUBSCRIPT);
    paragraphOneRunTwo.setText("2");

    try {
        FileOutputStream fos = new FileOutputStream("C://test.docx");
        document.write(fos);
        fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
是的,请尝试此代码-

import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.VerticalAlign;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class ApachePOI {    
    public static void main(String[] args) {

    XWPFDocument document = new XWPFDocument(); 
    XWPFParagraph paragraphOne = document.createParagraph();

    paragraphOne.setAlignment(ParagraphAlignment.CENTER);

    XWPFRun paragraphOneRunOne = paragraphOne.createRun();
    paragraphOneRunOne.setFontSize(25);
    paragraphOneRunOne.setBold(true);
    paragraphOneRunOne.setText("Oxygene - O");

    XWPFRun paragraphOneRunTwo = paragraphOne.createRun();
    paragraphOneRunTwo.setFontSize(17);
    paragraphOneRunTwo.setBold(true);
    paragraphOneRunTwo.setSubscript(VerticalAlign.SUBSCRIPT);
    paragraphOneRunTwo.setText("2");

    try {
        FileOutputStream fos = new FileOutputStream("C://test.docx");
        document.write(fos);
        fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
是的,请尝试此代码-

import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.VerticalAlign;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class ApachePOI {    
    public static void main(String[] args) {

    XWPFDocument document = new XWPFDocument(); 
    XWPFParagraph paragraphOne = document.createParagraph();

    paragraphOne.setAlignment(ParagraphAlignment.CENTER);

    XWPFRun paragraphOneRunOne = paragraphOne.createRun();
    paragraphOneRunOne.setFontSize(25);
    paragraphOneRunOne.setBold(true);
    paragraphOneRunOne.setText("Oxygene - O");

    XWPFRun paragraphOneRunTwo = paragraphOne.createRun();
    paragraphOneRunTwo.setFontSize(17);
    paragraphOneRunTwo.setBold(true);
    paragraphOneRunTwo.setSubscript(VerticalAlign.SUBSCRIPT);
    paragraphOneRunTwo.setText("2");

    try {
        FileOutputStream fos = new FileOutputStream("C://test.docx");
        document.write(fos);
        fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这很好用。但是如果我想写一些像Na2CO3()的东西呢?我必须为每个下标创建新的运行吗?给定运行中的所有文本必须共享相同的格式,这就是文件格式的工作方式。您的文件格式很好,我只是澄清,对于Na2Co3,您需要4次运行,因为有2位正常+2位下标工作正常。但是如果我想写一些像Na2CO3()的东西呢?我必须为每个下标创建新的运行吗?给定运行中的所有文本必须共享相同的格式,这就是文件格式的工作方式。您的文件格式很好,我只是澄清,对于Na2Co3,您需要4次运行,因为有2位正常+2位下标工作正常。但是如果我想写一些像Na2CO3()的东西呢?我必须为每个下标创建新的运行吗?给定运行中的所有文本必须共享相同的格式,这就是文件格式的工作方式。您的文件格式很好,我只是澄清,对于Na2Co3,您需要4次运行,因为有2位正常+2位下标工作正常。但是如果我想写一些像Na2CO3()的东西呢?我必须为每个下标创建新的运行吗?给定运行中的所有文本必须共享相同的格式,这正是文件格式的工作方式。您的情况很好,我只是澄清,对于Na2Co3,您将需要4次运行,因为有2位普通+2位下标