解析文档相信大家在工作中也经常遇到,小编也是最近给了个这么个需求,在使用中遇到了点问题,所以在此跟大家分享一下,避免多走弯路,感兴趣的小伙伴可以看一下!
之前在使用spire.doc解析word文档时遇到一些问题,当然通过各种技术只是解析文本的话是非常简单的。
今天我们来聊一聊通过书签解析word文档内的表格,以下是我总结的解决方案!
当时这块也是查了很久,最终找到了两种不同场景的解决方案,仅供参考!
解析表格内单元格书签。
1.1根据书签获取对应表格
1.2遍历表格
Document doc = new Document();
doc.loadFromFile("test.docx");
Bookmark bookmark = doc.getBookmarks().get("test1");
//判断书签是否在单元格内
if (((Paragraph) bookmark.getBookmarkStart().getOwner()).isInCell()) {
BookmarkStart bookmarkStart = bookmark.getBookmarkStart();
// 获取书签所在的段落
Paragraph paragraph = (Paragraph) bookmarkStart.getOwner();
// 获取段落所在的单元格
TableCell cell = (TableCell) paragraph.getOwner();
TableRow row = (TableRow) cell.getOwner();
Table table = (Table) row.getOwner();
}
//遍历表格中的行
for (int i = 0; i < table.getRows().getCount(); i++) {
TableRow row = table.getRows().get(i);
//遍历每行中的单元格
for (int j = 0; j < row.getCells().getCount(); j++) {
TableCell cell = row.getCells().get(j);
if (row.getCells().get(j)==row.getCells().get(j+1)){
}
String text="";
//遍历单元格中的段落
for (int k = 0; k < cell.getParagraphs().getCount(); k++) {
Paragraph paragraph = cell.getParagraphs().get(k);
text += paragraph.getText();
}
2.根据word文档中节解析表格,节一般情况下都是不可变的
//获取某一节
Section section = doc.getSections().get(0);
//获取当前节某个段落
Paragraph paragraph = section.getParagraphs().get(0);
//获取当前段落的所有表
TableCollection tables = section.getTables();
//获取该段落某个表
Table table = tables.get(0);
//遍历表格中的行
for (int i = 0; i < table.getRows().getCount(); i++) {
TableRow row = table.getRows().get(i);
//遍历每行中的单元格
for (int j = 0; j < row.getCells().getCount(); j++) {
TableCell cell = row.getCells().get(j);
if (row.getCells().get(j)==row.getCells().get(j+1)){
}
String text="";
//遍历单元格中的段落
for (int k = 0; k < cell.getParagraphs().getCount(); k++) {
Paragraph paragraph = cell.getParagraphs().get(k);
text += paragraph.getText();
}
最近刚发现了通过书签遍历表格的方法,也是抓紧来跟大家分享,话不多说,代码奉上
Document document = new Document();
document.loadFromFile("F:\\.docx");
Bookmark bookmark = document.getBookmarks().get("书签名");
Table table = (Table) bookmark.getBookmarkStart().getOwnerParagraph().getNextSibling();
以上就是获取书签对应的表格了,至于解析表格,上面也给出了相应的代码,直接cv就完事了;
另外各位帅哥美女看完动动发财的小手点点赞,觉得有用的记得收藏噢,以后会持续更新一些常见的问题解决方案!