You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Apache POI获取Word文档中第二个XWPFRun的字体大小?

解决XWPFRun获取字体大小返回null的问题

Word里的文本如果没单独设置字体属性,会自动继承上级(段落或文档默认)样式的属性。你遇到的情况里,"DATE"这个Run没有单独配置字体大小,所以getFontSizeAsDouble()会返回null,需要通过样式继承链来获取:

  • 优先读取当前Run自身设置的字体大小
  • 若为null,读取所属段落的默认字体大小
  • 若段落也未单独设置,读取文档的默认字体大小

实现代码示例:

private Double getRunFontSize(XWPFRun run) {
    // 先尝试获取Run自身的字体大小
    Double fontSize = run.getFontSizeAsDouble();
    if (fontSize != null) {
        return fontSize;
    }
    // 从所属段落读取字体大小
    XWPFParagraph paragraph = run.getParagraph();
    if (paragraph != null) {
        CTP p = paragraph.getCTP();
        CTPPr pPr = p.getPPr();
        if (pPr != null && pPr.getRPr() != null) {
            CTSz sz = pPr.getRPr().getSz();
            if (sz != null) {
                // Word中字体大小单位为半磅,需转换为常规磅值
                return sz.getVal().doubleValue() / 2.0;
            }
        }
    }
    // 若都未设置,返回Word默认字体大小11磅
    return 11.0;
}

// 调用示例
for (XWPFParagraph p : cell.getParagraphs()) {
    for(XWPFRun r1 : p.getRuns()){
        Double fontSize = getRunFontSize(r1);
        // 后续处理逻辑
    } 
}

内容的提问来源于stack exchange,提问作者Priyanka Mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 06:47:06