通过像https://jsfiddle.net/fx6gtj6o/这样的库,我们可以使用任何文字颜色创建 word文档,但对于背景或文本的突出显示,我没有&#39找不到任何解决方案。
手动方式的单词页面颜色!:
这是我通过poi.apache创建word文档的主要代码
[Display(Name = "Age", Prompt = "Age")]
[Required(AllowEmptyStrings = false, ErrorMessage = "Age is required")]
[Range(16, 99, ErrorMessage = "Please specify an Age between 16 and 99")]
public int Age { get; set; }
答案 0 :(得分:2)
更新:XWPF是创建word文档文件的最新方式,但只能通过旧格式版本(.doc)的HWPF设置背景
对于* .doc(即POI的HWPF组件):
突出显示文字:
查看setHighlighted()
背景颜色:
我想你的意思是段落的背景(AFAIK,Word也允许为整个页面着色,这是另一回事)
setShading()
允许您为段落提供前景色和背景色(通过setCvFore()
和setCvBack()
SHDAbstractType
)。 IIRC,您需要设置前景以便为段落着色。 背景仅与由两种(交替)颜色组成的阴影相关。
底层数据结构名为Shd80
([MS-DOC],2.9.248)。还有SHDOperand
([MS-DOC],2.9.249)反映了Word97之前Word的功能。 [MS-DOC]是二进制Word文件格式规范,可在MSDN上免费获取。
修改强>
以下是一些代码来说明上述内容:
try {
HWPFDocument document = [...]; // comes from somewhere
Range range = document.getRange();
// Background shading of a paragraph
ParagraphProperties pprops = new ParagraphProperties();
ShadingDescriptor shd = new ShadingDescriptor();
shd.setCvFore(Colorref.valueOfIco(0x07)); // yellow; ICO
shd.setIpat(0x0001); // solid background; IPAT
pprops.setShading(shd);
Paragraph p1 = range.insertBefore(pprops, StyleSheet.NIL_STYLE);
p1.insertBefore("shaded paragraph");
// Highlighting of individual characters
Paragraph p2 = range.insertBefore(new ParagraphProperties(), StyleSheet.NIL_STYLE);
CharacterRun cr = p2.insertBefore("highlighted text\r");
cr.setHighlighted((byte) 0x06); // red; ICO
document.write([...]); // document goes to somewhere
} catch (IOException e) {
e.printStackTrace();
}
答案 1 :(得分:1)
我们只需要添加这3行来为XWPF设置Word文档的背景颜色。我们必须在声明XWPFRun及其文本颜色后设置这些行:
CTShd cTShd = run.getCTR().addNewRPr().addNewShd();
cTShd.setVal(STShd.CLEAR);
cTShd.setFill(hex_background_color);