spire.Doc.free for java 根据书签定位解析word文档内表格

解析文档相信大家在工作中也经常遇到,小编也是最近给了个这么个需求,在使用中遇到了点问题,所以在此跟大家分享一下,避免多走弯路,感兴趣的小伙伴可以看一下!

之前在使用spire.doc解析word文档时遇到一些问题,当然通过各种技术只是解析文本的话是非常简单的。

今天我们来聊一聊通过书签解析word文档内的表格,以下是我总结的解决方案!

当时这块也是查了很久,最终找到了两种不同场景的解决方案,仅供参考!

  1. 解析表格内单元格书签。

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();
                    }
  1. 最近刚发现了通过书签遍历表格的方法,也是抓紧来跟大家分享,话不多说,代码奉上

Document document = new Document();
     document.loadFromFile("F:\\.docx");
   Bookmark bookmark = document.getBookmarks().get("书签名");
Table table = (Table) bookmark.getBookmarkStart().getOwnerParagraph().getNextSibling();

以上就是获取书签对应的表格了,至于解析表格,上面也给出了相应的代码,直接cv就完事了;

另外各位帅哥美女看完动动发财的小手点点赞,觉得有用的记得收藏噢,以后会持续更新一些常见的问题解决方案!

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spire.Doc for Java是一款功能强大的Java Word组件,可以帮助Java开发者快速实现Word文档的创建、读取和编辑等操作。其中,根据模板生成Word文档Spire.Doc for Java的一项重要功能,下面简单介绍一下它的使用方法。 1. 创建模板文档 首先,我们需要创建一个Word模板文档,其中包含需要替换的占位符和样式等信息。可以使用Microsoft Word等工具创建模板文档,并将其保存为docdocx格式。 2. 加载模板文档 在Java代码中,使用Spire.Doc for JavaDocument类加载模板文档,代码如下: ```java import com.spire.doc.*; public class LoadTemplate { public static void main(String[] args) { // 创建Document对象 Document doc = new Document(); // 加载模板文档 doc.loadFromFile("template.docx"); } } ``` 其中,loadFromFile方法的参数为模板文档的路径。 3. 替换占位符 接下来,我们需要根据实际需求替换模板文档中的占位符。Spire.Doc for Java提供了replace方法来实现占位符的替换,代码如下: ```java import com.spire.doc.*; public class ReplacePlaceholder { public static void main(String[] args) { // 创建Document对象 Document doc = new Document(); // 加载模板文档 doc.loadFromFile("template.docx"); // 替换占位符 doc.replace("{{name}}", "张三", true, true); doc.replace("{{age}}", "25", true, true); // 保存文档 doc.saveToFile("output.docx", FileFormat.Docx_2013); } } ``` 其中,replace方法的第一个参数为需要替换的占位符,第二个参数为替换后的文本内容,第三个参数表示是否区分大小写,第四个参数表示是否替换整个单词。 4. 设置样式 如果需要设置生成的Word文档的样式,可以使用Spire.Doc for Java提供的各种样式类来实现,例如ParagraphStyle、CharacterFormat等。具体使用方法可以参考Spire.Doc for Java的官方文档。 5. 保存文档 最后,调用Document类的saveToFile方法将生成的Word文档保存到指定路径,代码如下: ```java doc.saveToFile("output.docx", FileFormat.Docx_2013); ``` 其中,第一个参数为保存的文件路径,第二个参数为保存的文档格式,可以选择docdocx、pdf等多种格式。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值