栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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文件即可。

成果图片如下:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/326945.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号