2016-02-15 2 views
2

Я хочу создать файл docx с помощью Apache POI.Как установить цвет фона для запуска (слово в строке или абзаце) в файле docx с помощью Apache POI?

Я хочу установить цвет фона пробега (т. Е. Слово или некоторые части абзаца).

Как я могу это сделать?

Возможно через Apache POI или нет.

Заранее спасибо

+0

[Это] (http://stackoverflow.com/a/34544181/5717099) представляет собой раствор для HWPF. Я не уверен, что то же самое возможно с использованием XWPF. – morido

ответ

6

Слово предоставляет две возможности для этого. В рамках трасс возможны цвета фона. Но есть также так называемые настройки подсветки.

С XWPF обе возможности возможны только с использованием базовых объектов CTShd и CTHighlight. Но пока CTShd поставляется по умолчанию poi-ooxml-schemas-3.13-...jar, для CTHighlight требуется полностью ooxml-schemas-1.3.jar, как указано в https://poi.apache.org/faq.html#faq-N10025.

Пример:

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")); 

} 
}