PYTHON从表格中提取数据并按属性分割输出docx

    这次的需求是从表格中获取图斑编号和页码,组成目录,然后按乡镇村分开并输出docx。

    首先可以把这次需求分成几个部分:

    1、从表格中读取数据,并用一个字典储存其中的数据。

 

def dqbg():
    table = xlrd.open_workbook("DQBH.xls", 'r')
    sheet1 = table.sheet_by_name("Sheet1")
    nrows = sheet1.nrows
    global cglist
    cglist = []
    for rown in range(1,nrows):
        data_list = {}
        list1 = sheet1.row_values(rown)
        data_list["房屋编号"] = list1[0]
        data_list["乡镇名"] = list1[1]
        data_list["村名"] = list1[2]
        data_list["编号"] = int(list1[3])
        cglist.append(data_list)
    return cglist
dqbg()

    这里在写的时候遇见了错误,需要注意每个循环内用来装数据的容器需要放在循环内部,否则就只会有最后一个数据输出。

    还需要注意的是表格中的数字在读取的时候自动会变成浮点数,日期等特殊格式也会改变,这部分数据需要根据实际需求进行相应的处理。

2、根据读取的乡镇村的名字创建文档。

for each_line1 in cglist:
    f = open((each_line1["乡镇名"]+each_line1["村名"]+".txt"),"w",encoding='utf-8')
    f.writelines(" "*20 + "目录" + " "*20 + "\n")
    f.close()

3、遍历创建的文档,将列表中的数据与其匹配。

wjm = os.walk(os.curdir)
list1 = []
for wjmc in wjm:
    for i in wjmc[2]:
        list1.append(i)
for each_line in cglist:
    for g in list1:
        gsplit = g.split(".")
        if (each_line["乡镇名"]+each_line["村名"]) == gsplit[0]:
            str1 = ""
            str1 += each_line["房屋编号"] + "-" * 20 + str(each_line["编号"]) + "\n"

得到了与之对应的文档中的图斑编号等数据。

4.(1)输出TXT

f1 = open((gsplit[0] + ".txt"), "a", encoding='utf-8')
f1.writelines(str1)
f1.close()

(2)输出DOCX

要输出DOCX需要对代码进行简单的修改,将上面新建TXT改成新建DOCX。

document = Document(each_line["乡镇名"]+each_line["村名"]+".docx")
paragraph = document.add_paragraph()
run = paragraph.add_run(str1)
document.save(gsplit[0] + '.docx')

再将for循环输出的str1写入相应的DOCX文件即可。

成果图片如下:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值