如何使用 Apache POI 在 docx 文件中设置 运行(行中的单词或段落)的背景颜色?
How can I set background colour of a run (a word in line or a paragraph) in a docx file by using Apache POI?
我想使用 Apache POI 创建一个 docx 文件。
我想设置 运行 的背景颜色(即一个词或一段的某些部分)。
我该怎么做?
是否可能通过 Apache POI。
提前致谢
Word 为此提供了两种可能性。运行中确实有可能的背景颜色。但是也有所谓的高亮设置。
对于 XWPF
,这两种可能性只能使用基础对象 CTShd
和 CTHighlight
。但是,虽然 CTShd
附带默认值 poi-ooxml-schemas-3.13-...jar
,但对于 CTHighlight
,如 https://poi.apache.org/faq.html#faq-N10025.
中所述,需要完整的 ooxml-schemas-1.3.jar
示例:
import java.io.FileOutputStream;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTShd;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STShd;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STHighlightColor;
/*
To
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STHighlightColor;
the fully ooxml-schemas-1.3.jar is needed as mentioned in https://poi.apache.org/faq.html#faq-N10025
*/
public class WordRunWithBGColor {
public static void main(String[] args) throws Exception {
XWPFDocument doc= new XWPFDocument();
XWPFParagraph paragraph = doc.createParagraph();
XWPFRun run=paragraph.createRun();
run.setText("This is text with ");
run=paragraph.createRun();
run.setText("background color");
CTShd cTShd = run.getCTR().addNewRPr().addNewShd();
cTShd.setVal(STShd.CLEAR);
cTShd.setColor("auto");
cTShd.setFill("00FFFF");
run=paragraph.createRun();
run.setText(" and this is ");
run=paragraph.createRun();
run.setText("highlighted");
run.getCTR().addNewRPr().addNewHighlight().setVal(STHighlightColor.YELLOW);
run=paragraph.createRun();
run.setText(" text.");
doc.write(new FileOutputStream("WordRunWithBGColor.docx"));
}
}
我想使用 Apache POI 创建一个 docx 文件。
我想设置 运行 的背景颜色(即一个词或一段的某些部分)。
我该怎么做?
是否可能通过 Apache POI。
提前致谢
Word 为此提供了两种可能性。运行中确实有可能的背景颜色。但是也有所谓的高亮设置。
对于 XWPF
,这两种可能性只能使用基础对象 CTShd
和 CTHighlight
。但是,虽然 CTShd
附带默认值 poi-ooxml-schemas-3.13-...jar
,但对于 CTHighlight
,如 https://poi.apache.org/faq.html#faq-N10025.
ooxml-schemas-1.3.jar
示例:
import java.io.FileOutputStream;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTShd;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STShd;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STHighlightColor;
/*
To
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STHighlightColor;
the fully ooxml-schemas-1.3.jar is needed as mentioned in https://poi.apache.org/faq.html#faq-N10025
*/
public class WordRunWithBGColor {
public static void main(String[] args) throws Exception {
XWPFDocument doc= new XWPFDocument();
XWPFParagraph paragraph = doc.createParagraph();
XWPFRun run=paragraph.createRun();
run.setText("This is text with ");
run=paragraph.createRun();
run.setText("background color");
CTShd cTShd = run.getCTR().addNewRPr().addNewShd();
cTShd.setVal(STShd.CLEAR);
cTShd.setColor("auto");
cTShd.setFill("00FFFF");
run=paragraph.createRun();
run.setText(" and this is ");
run=paragraph.createRun();
run.setText("highlighted");
run.getCTR().addNewRPr().addNewHighlight().setVal(STHighlightColor.YELLOW);
run=paragraph.createRun();
run.setText(" text.");
doc.write(new FileOutputStream("WordRunWithBGColor.docx"));
}
}