Jacob读取嵌套表格

MSWordManager msWordManager = MSWordManager.getMSWordManager();
msWordManager.openDocument(“Z:\检测3-校准证书格式2019.doc”);
Dispatch tables = Dispatch.get(msWordManager.getDoc(), “Tables”).toDispatch();

    // 获取表格数目
    int tablesCount = Dispatch.get(tables,"Count").toInt();
    //System.out.println("tablesCount:"+tablesCount);
    // 循环获取表格
    for(int i=1;i<=tablesCount;i++) {
        // 获取第i个表格
        Dispatch table = Dispatch.call(tables, "Item", new Variant(i)).toDispatch();

        Dispatch tabless = Dispatch.get(table, "Tables").toDispatch();
            int tablesCounts = Dispatch.get(tabless,"Count").toInt();

            for(int o = 1;o<=tablesCounts;o++){
                Dispatch tablessss = Dispatch.call(tabless, "Item", new Variant(o)).toDispatch();
                // 获取该表格所有行
                Dispatch rows = Dispatch.get(tablessss, "Rows").toDispatch();
                // 获取该表格所有列
                Dispatch columns = Dispatch.get(tablessss, "Columns").toDispatch();
                // 获取该表格行数
                int rowsCount = Dispatch.get(rows, "Count").toInt();
                // 获取该表格列数
                int columnsCount = Dispatch.get(columns, "Count").toInt();
                //System.out.println("第"+i+"个表格:行:"+rowsCount+"列:"+columnsCount);
                for(int row_i=1 ; row_i<=rowsCount ; row_i++){
                    //获取当前行
                    //Dispatch row = Dispatch.call(rows, "Item", new Variant(row_i)).toDispatch();
                    //获取当前行的列数
                    //Dispatch columns_row = Dispatch.call(row, "Columns").toDispatch();
                    //int columns_row_Count = Dispatch.get(columns_row, "Count").toInt();
                    //System.out.println("每行列数:"+columns_row_Count);
                    for(int col_i=1 ; col_i<=columnsCount ; col_i++) {
                        try {
                            Dispatch cell = Dispatch.call(tablessss, "Cell", new Variant(row_i),new Variant(col_i)).toDispatch();
                            Dispatch Range=Dispatch.get(cell,"Range").toDispatch();
                            String t=Dispatch.get(Range,"Text").toString();
                            //公司内网及本地测试编码
                        /*String s=new String(t.getBytes("utf-8"));*/
                            //中车内网测试环境编码
                            String s=new String(t.getBytes("utf-8"));

                            System.out.println("外层第"+i+"个表格,内层第"+o+"个表格,值="+s.replace("","").trim());
                            //wrod.putTxtToCell(i,row_i,col_i,"");

                        } catch (UnsupportedEncodingException e) {
                            continue;
                        } catch (Exception e) {
                            e.printStackTrace();
                            continue;
                        }
                    }
            }
        }
        // 获取该表格所有行
        Dispatch rows = Dispatch.get(table, "Rows").toDispatch();
        // 获取该表格所有列
        Dispatch columns = Dispatch.get(table, "Columns").toDispatch();
        // 获取该表格行数
        int rowsCount = Dispatch.get(rows, "Count").toInt();
        // 获取该表格列数
        int columnsCount = Dispatch.get(columns, "Count").toInt();
        //System.out.println("第"+i+"个表格:行:"+rowsCount+"列:"+columnsCount);
        for(int row_i=1 ; row_i<=rowsCount ; row_i++) {
            //获取当前行
            //Dispatch row = Dispatch.call(rows, "Item", new Variant(row_i)).toDispatch();
            //获取当前行的列数
            //Dispatch columns_row = Dispatch.call(row, "Columns").toDispatch();
            //int columns_row_Count = Dispatch.get(columns_row, "Count").toInt();
            //System.out.println("每行列数:"+columns_row_Count);
            for (int col_i = 1; col_i <= columnsCount; col_i++) {
                try {
                    Dispatch cell = Dispatch.call(table, "Cell", new Variant(row_i), new Variant(col_i)).toDispatch();
                    Dispatch Range = Dispatch.get(cell, "Range").toDispatch();
                    String t = Dispatch.get(Range, "Text").toString();
                    //公司内网及本地测试编码
                        /*String s=new String(t.getBytes("utf-8"));*/
                    //中车内网测试环境编码
                    String s = new String(t.getBytes("utf-8"));

                    System.out.println("外层第" + i + "个表格,值=" + s.replace("", "").trim());
                    //wrod.putTxtToCell(i,row_i,col_i,"");

                } catch (UnsupportedEncodingException e) {
                    continue;
                } catch (Exception e) {
                    continue;
                }
            }
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值