如何将 docx 文件表格单元格中的完整文本获取为单个字符串
我正在尝试使用 docx4j api 获取 java 代码中的 docx 文件表数据。 在这里,我试图一次获取每个单元格数据。如何获取该数据。这里我放置具有递归方法调用的代码。
static void walkList1(List children) {
i=children.size();
int i=1;
for (Object o : children) {
if (o instanceof javax.xml.bind.JAXBElement) {
if (((JAXBElement) o).getDeclaredType().getName()
.equals("org.docx4j.wml.Text")) {
org.docx4j.wml.Text t = (org.docx4j.wml.Text) ((JAXBElement) o)
.getValue();
System.out.println(" 1 1 " + t.getValue());
}
}
else if (o instanceof org.docx4j.wml.R) {
org.docx4j.wml.R run = (org.docx4j.wml.R) o;
walkList1(run.getRunContent());
} else {
System.out.println(" IGNORED " + o.getClass().getName());
}
}
}
I am trying to get the docx file table data in java code using docx4j api.
Here i am trying to get the each cell data at a time .how to get that data..here i am placing my code which have recursive method calls.
static void walkList1(List children) {
i=children.size();
int i=1;
for (Object o : children) {
if (o instanceof javax.xml.bind.JAXBElement) {
if (((JAXBElement) o).getDeclaredType().getName()
.equals("org.docx4j.wml.Text")) {
org.docx4j.wml.Text t = (org.docx4j.wml.Text) ((JAXBElement) o)
.getValue();
System.out.println(" 1 1 " + t.getValue());
}
}
else if (o instanceof org.docx4j.wml.R) {
org.docx4j.wml.R run = (org.docx4j.wml.R) o;
walkList1(run.getRunContent());
} else {
System.out.println(" IGNORED " + o.getClass().getName());
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这部分看起来很可疑:
第一个必须是可变的静态字段(因为否则你的代码将无法编译),这通常是一个坏主意。第二个是该方法的本地函数,但从未使用过。
如果您尝试将所有内容合并到一个
String
中,我建议您创建一个StringBuilder
并将其传递给递归调用,例如:Also
List;
和JAXBElement
是泛型类型。有什么理由使用原始类型吗?This part looks suspicious:
The first must be a mutable static field (because otherwise your code will not compile) which is usually a bad idea. The second is local to the method but is never used.
If you are trying to combine all content into a single
String
I suggest you create aStringBuilder
and pass that to your recursive calls, e.g.:Also
List<T>
andJAXBElement<T>
are generic types. Is there any reason to use the raw types?