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的信息的主要内容,如果未能解决你的问题,请参考以下文章
使用java Apache poi 根据word模板生成word报表