如何从Word中的表中获取Alt文本,例如标题或说明。 我找到的所有信息都有上下文,文本,宽度,样式等来阅读或修改。
我的目标是识别模板中的某些表,以便我可以修改它们。
答案 0 :(得分:1)
我将在这里做一些假设。首先,你在谈论docx
格式,其次是“替代文字”,你的意思是标题。
标题只是一个在表格之前或之后的段落。它的样式为Caption
,运行时带有一些文本,如 Table ,可能包含一个简单的字段SEQ Table
。这将是默认的表格标题,但它可能只是一个名称为 Department Heads 的运行。关键是样式名称。 Word使用标准样式名称来计算其他内容,例如TOC
。
注意:,您无法通过选择表格并单击菜单选项来修改标题。它并没有以任何有意义的方式联系起来。你必须修改段落。
因此,要查找标题,您需要查看文档元素列表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;
}
答案 1 :(得分:0)
在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("\"", "");
}
}