我需要使用 Apache POI 生成一个 Word 文档,该文档在一行中包含多种颜色的文本,然后以水平换行符结尾。就像下面的例子一样:
我尝试使用
mainText.setBorderBetween(Borders.BASIC_THIN_LINES);
来获得一条水平线,它有效,但水平线被一直向下推并且没有正确居中。我尝试使用:
mainTextRun.setColor("FFA500");
mainTextRun.setText("text 1");
mainTextRun.setColor("008000");
mainTextRun.setText("text 2");
mainTextRun.setColor("0000FF");
mainTextRun.setText("text 3");
但它没有生成所需的文本,因为它不断跳行,如下所示:
我猜你的
mainText
是一个XWPFParagraph
,而你的mainTextRun
是在那个XWPFRun
中创建的多个XWPFParagraph
。然后,下面的小最小的、可重现的示例将起作用并生成如下所示的Word文档。
import java.io.FileOutputStream;
import org.apache.poi.xwpf.usermodel.*;
public class CreateWordParagraphBorderAndColoredTextRuns {
public static void main(String[] args) throws Exception {
XWPFDocument document = new XWPFDocument();
XWPFParagraph mainText = document.createParagraph();
mainText.setBorderBottom(Borders.BASIC_THIN_LINES);
XWPFRun mainTextRun = mainText.createRun();
mainTextRun.setColor("FFA500"); mainTextRun.setText("text 1 ");
mainTextRun = mainText.createRun();
mainTextRun.setColor("008000"); mainTextRun.setText("text 2 ");
mainTextRun = mainText.createRun();
mainTextRun.setColor("0000FF"); mainTextRun.setText("text 3 ");
mainText = document.createParagraph();
FileOutputStream out = new FileOutputStream("./CreateWordParagraphBorderAndColoredTextRuns.docx");
document.write(out);
out.close();
document.close();
}
}
结果: