Apache Poi Word表,有关Alt Text的信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache Poi Word表,有关Alt Text的信息相关的知识,希望对你有一定的参考价值。

如何从Word中的表中获取Alt文本,例如标题或说明。我找到的所有信息都有上下文,文本,宽度,样式等来阅读或修改。

我的目标是识别模板中的某些表,以便我可以修改它们。

答案

我将在这里做一些假设。首先,你在谈论docx格式,其次是“Alt Text”你的意思是一个标题。

标题只是一个在表格之前或之后的段落。它将具有Caption的风格,有一些像Table这样的文本,可能包括一个简单的字段SEQ Table。这将是默认的表格标题,但它可能只是一个名为Department Heads的名称。关键是样式名称。 Word使用标准样式名称来计算其他内容,例如TOC

注意:在Word中,您无法通过选择表格并单击菜单选项来修改标题。它并没有以任何有意义的方式联系起来。你必须修改段落。

因此,要查找标题,您需要查看文档元素列表XWPFDocument.getBodyElements(),并找到每个段落的样式为Caption。找到想要的那个后,您可以查看上方或下方的元素以查找该表。如果您知道字幕全部高于或低于表格,则您的搜索会更容易。

因此,要检索特定命名标题后面的表格,我会尝试这样的事情:

public XWPFTable FindTable(String name) {
    boolean foundTable = false;
    XWPFParagraph p;
    for (IBodyElement elem : doc.getBodyElements()) {
        switch (elem.getElementType()) {
        case PARAGRAPH:
            foundTable = false;
            p = (XWPFParagraph) elem;
            if (p.getStyle() == "Caption" && p.getText() == name) {
                foundTable = true;
            }
            break;
        case TABLE:
            if (foundTable) {
                return (XWPFTable) elem;
            }
            break;
        case CONTENTCONTROL:
            foundTable = false;
            break;
        default:
            foundTable = false;
            break;
        }
    }

    return null;
}
另一答案

在Word中,您可以将表格标题设置为唯一的,然后在xml中获取表格:

String tableXML = mytable.getCTTbl();

要提取表格标题:

String[] xml = tableXML.split(System.lineSeparator());
String caption = null;
for (String x : xml)
{
    if (x.contains("w:tblCaption"))
    {
        caption = x.split("w:val=")[1].replace("/>", "");
        caption = caption.replace(""", "");
    }
}

以上是关于Apache Poi Word表,有关Alt Text的信息的主要内容,如果未能解决你的问题,请参考以下文章

急求POI 将数据导出到Word的实例

使用java Apache poi 根据word模板生成word报表

我想用POI在Word里插入一张图片,这是我的测试代码。执行之后word打不开!错误如图中的提示

poi控制简单的word

读取word文档,暂时不能读取图片,案例代码

用户WORD模板写文件