基于fme和python-docx第三方库批量更新不动产调查表

基于fme和python-docx第三方库批量更新不动产调查表

最近应朋友需要批量更新在不动产成果中提交的各种word报表中的指定数据,根据初步的了解,我做了一个基于fme软件和python-docx第三方库进行一个批量的更新方案。

基本情况

1.fme软件本身不支持word文档的读,只支持写出,所有要处理word,我采用的是python-docx第三方库。
2.本案例就以不动产权籍调查表为例,更新一下里面一项面积数据:
在这里插入图片描述
在这里插入图片描述

3.更新信息表格。
在这里插入图片描述

基本思路
基于调查表中的宗地代码和更新表格中的宗地代码,将更新信息和对应调查表挂接后,提取对应更新信息实现信息替换。
在这里插入图片描述

具体操作步骤
1.安装第三方库python-docx
具体安装方法,我采用的官方博客里面的教程,很简单,我将库安装在如下路径,方便所有版本fme都可以直接调用。
fme.exe python -m pip install 库名称 --target"C:\Users\admin\Documents\FME\Plugins\Python"
在这里插入图片描述

2.使用pythoncaller读取word文档内容
在这里插入图片描述

主要代码:

    def input(self, feature):
        file_doc=feature.getAttribute('path_windows')
        print(file_doc)
        doc = docx.Document(file_doc)
        for table in doc.tables:
            for row in table.rows:
                for cell in row.cells:
                    print(cell.text)
                    feature.setAttribute("data_line", cell.text)
                    self.pyoutput(feature)

3.读取跟新表中更新数据并挂接
根据宗地代码将更新数据和word中数据挂接在一起;
在这里插入图片描述

4.采用pythoncaller更新word文档
主要是将原始word中的数据替换为新的数据,注意源文件会更改。
实现代码

def info_update(self, doc, replace_dict):
    # 替换文档中所有文字内容
    for para in doc.paragraphs:
        # print(para.runs)
        for run in para.runs:
            # 从字典中对比替换内容
            for key, value in replace_dict.items():
                if key in run.text:
                    print(key)
                    print(value)
                    run.text = run.text.replace(key, value)
    # 替换文档中表格中的内容
    for table in doc.tables:
        for row in table.rows:
            for cell in row.cells:
                for paragraph in cell.paragraphs:
                    for run in paragraph.runs:
                # 从字典中对比替换内容
                        for key, value in replace_dict.items():
                            if key in cell.text:
                                print(key)
                                print(value)
                                run.text = run.text.replace(key, value)

这里因为更新表格内数据每次字体都发生变换,所以下面这个循环我有套了一层上面的循环,这样字体就不会变了。

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值