【办公类110-05】20260807园园通小班“待补充”户籍地址自动修改成为真实地址(Python+EXCEL)

一、背景需求

通知要求8月7日前把园园通新小班建班、幼儿分班、信息完善(待处理问题)完成。

为了取消标红,

我用了一个批量填写“假地址”的方法。确保标红的内容都被填全。

【办公类110-04】20260806园园通小班分班后“待处理问题”(批量信息、默认省市区、待添加地址)https://mp.csdn.net/mp_blog/creation/editor/163531430

其他数据重要性不大,户籍地址是最重要的,必须要填写正确,目前“园园通”里面的外省户籍地址都是“待补充”

二、数据收集

因为幼儿纸质报名表上没有“外省户籍地址”,只有外省(省),连外省(市)、外省(区)也没有。

 组长说她可以马上向家长收集“户籍地址”

所以组长让小班组员去问家长要名单。

我用接龙管家做了一套

既然做了表单,我又添加一个“独生子女统计”

这个模版发给组长,让组员们复制。

小班组员们打电话来问:“我不会把里面的姓名改成我们班孩子,你能帮我改一下吗”

之前正好收集了18个班级姓名表单

里面有所有托班、小班的幼儿姓名、性别

我希望在幼儿姓名前面添加“学号”,就在“共享表单”里,做一个学号和姓名的连接

复制整列“学号+姓名”

打开接龙管家模版

设置名单

把包含班级名字的接龙表单发给班主任,再抄送管理员权限

三、表单下载

组长速度最快

打开表单,里面有所有需要填写的项目

虽然其他信息也要修改(我都是默认选否、默认非农-城市)但最重要的是先修改“户籍地址”

从表格里看,我需要读取A列“姓名”和E列“户籍地址”


'''
园园通小班孩子分班后补全信息
1.外省户口孩子更新地址(只更新地址,把待更新改掉)
3.Python模拟鼠标点击园园通按钮,进行分班
4.前期已经3101搜索过了。
'''


import openpyxl
import pyautogui
import time
import pyperclip
import pygetwindow as gw

# 1. 找到VSCode窗口(匹配标题含 Visual Studio Code)
vscode_wins = gw.getWindowsWithTitle("Visual Studio Code")
if not vscode_wins:
    print("未找到VSCode窗口,请先打开VSCode再运行!")
else:
    win = vscode_wins[0]
    # 自动最小化VSCode
    win.minimize()
    print("VSCode已自动最小化,你有5秒时间移动鼠标到目标位置")
    time.sleep(5)  # 等待5秒给你放鼠标

import random

# 随机休眠:1~3秒,带小数,模拟真人操作
def rand_sleep():
    t = random.uniform(2, 3)
    time.sleep(t)


# file_path = r"C:\Users\mhjg2\Desktop\20260805园园通小班分班\20260805班级信息表.xlsx"
file_path = r"C:\Users\mhjg2\Desktop\20260805园园通小班分班\20260806小1班圆圆通信息补全(1).xlsx"

wb = openpyxl.load_workbook(file_path)


# 读取表格
for sheet_name in wb.sheetnames:
    ws = wb[sheet_name]
    for row in ws.iter_rows(min_row=2, values_only=True):        # 从第二行开始读取姓名
    # for row in ws.iter_rows(min_row=24, values_only=True):    # 如果出问题,断了,从第X行读取孩子姓名
        if len(row) < 4:
            continue
        name = row[0]
        if not name or str(name).strip() == "":
            continue  
        address = row[4]      
        # class_name = row[1]
        # garden_name = row[1]
        # data_list.append([class_name, name])
        print(name)
        print(address)


         # 点击姓名栏,
        pyautogui.click(861,376)
        # 1. 复制指定文字到剪贴板
        # print('写入姓名:',name)
        pyperclip.copy(name)
        # 2. 模拟Ctrl+V粘贴
        pyautogui.hotkey("ctrl", "v")
        rand_sleep()  # 延迟2秒切换窗口

         # 搜索
        pyautogui.click(758,497)        
        rand_sleep()

         # 编辑
        pyautogui.click(1652,671)    
        time.sleep(3)

        # 模拟滚动到底部
        pyautogui.click(1652,671)  
        for _ in range(2):
            pyautogui.scroll(-1000)
        rand_sleep()
            # time.sleep(0.3)  # 每滚轮一下间隔0.3秒

       # 户籍地址点击三次
        for i in range(3):
            pyautogui.click(1404,473)
        rand_sleep()
        # 1. 复制指定文字到剪贴板
        # print('写入姓名:',name)
        pyperclip.copy(address)
        # 2. 模拟Ctrl+V粘贴
        pyautogui.hotkey("ctrl", "v")
        rand_sleep()  # 延迟2秒切换窗口

        # 下移到底部
        for _ in range(1):
            pyautogui.scroll(-1000)
        rand_sleep()


        # 确认,回到最初的界面
        pyautogui.click(1027,857)
        time.sleep(5)    # 保存时间长一点

# 自动最大化VSCode
win.maximize()
print("VSCode已自动最大化,程序结束")


因为幼儿信息保密,所以不能展示图片或视频。

反正我使用代码读取小1班的姓名,和对应地址,顺利将“待补充”批量改成“正确地址”

小3班老师也很快发来了接龙表单

表单路径修改一下


'''
园园通小班孩子分班后补全信息
1.外省户口孩子更新地址(只更新地址,把待更新改掉)
3.Python模拟鼠标点击园园通按钮,进行分班
4.前期已经3101搜索过了。
'''


import openpyxl
import pyautogui
import time
import pyperclip
import pygetwindow as gw

# 1. 找到VSCode窗口(匹配标题含 Visual Studio Code)
vscode_wins = gw.getWindowsWithTitle("Visual Studio Code")
if not vscode_wins:
    print("未找到VSCode窗口,请先打开VSCode再运行!")
else:
    win = vscode_wins[0]
    # 自动最小化VSCode
    win.minimize()
    print("VSCode已自动最小化,你有5秒时间移动鼠标到目标位置")
    time.sleep(5)  # 等待5秒给你放鼠标

import random

# 随机休眠:1~3秒,带小数,模拟真人操作
def rand_sleep():
    t = random.uniform(2, 3)
    time.sleep(t)


# file_path = r"C:\Users\mhjg2\Desktop\20260805园园通小班分班\20260805班级信息表.xlsx"
# file_path = r"C:\Users\mhjg2\Desktop\20260805园园通小班分班\20260806小1班圆圆通信息补全(1).xlsx"
file_path = r"C:\Users\mhjg2\Desktop\20260805园园通小班分班\20260806小3班圆圆通信息补全.xlsx"

wb = openpyxl.load_workbook(file_path)


# 读取表格
for sheet_name in wb.sheetnames:
    ws = wb[sheet_name]
    for row in ws.iter_rows(min_row=2, values_only=True):        # 从第二行开始读取姓名
    # for row in ws.iter_rows(min_row=24, values_only=True):    # 如果出问题,断了,从第X行读取孩子姓名
        if len(row) < 4:
            continue
        name = row[0]
        if not name or str(name).strip() == "":
            continue  
        address = row[4]      
        # class_name = row[1]
        # garden_name = row[1]
        # data_list.append([class_name, name])
        print(name)
        print(address)


         # 点击姓名栏,
        pyautogui.click(861,376)
        # 1. 复制指定文字到剪贴板
        # print('写入姓名:',name)
        pyperclip.copy(name)
        # 2. 模拟Ctrl+V粘贴
        pyautogui.hotkey("ctrl", "v")
        rand_sleep()  # 延迟2秒切换窗口

         # 搜索
        pyautogui.click(758,497)        
        rand_sleep()

         # 编辑
        pyautogui.click(1652,671)    
        time.sleep(3)

        # 模拟滚动到底部
        pyautogui.click(1652,671)  
        for _ in range(2):
            pyautogui.scroll(-1000)
        rand_sleep()
            # time.sleep(0.3)  # 每滚轮一下间隔0.3秒

       # 户籍地址点击三次
        for i in range(3):
            pyautogui.click(1404,473)
        rand_sleep()
        # 1. 复制指定文字到剪贴板
        # print('写入姓名:',name)
        pyperclip.copy(address)
        # 2. 模拟Ctrl+V粘贴
        pyautogui.hotkey("ctrl", "v")
        rand_sleep()  # 延迟2秒切换窗口

        # 下移到底部
        for _ in range(1):
            pyautogui.scroll(-1000)
        rand_sleep()


        # 确认,回到最初的界面
        pyautogui.click(1027,857)
        time.sleep(5)    # 保存时间长一点

# 自动最大化VSCode
win.maximize()
print("VSCode已自动最大化,程序结束")


25个孩子大约12分钟

小4班的表单来了,这份不是我设计的模版,班主任收集了一些幼儿的基础信息

家长自己填写的省市,就很不完整,缺少区,还是要用接龙管家里面的“省市区”

不过地址有的

这个文件上有个图标,看看Python能不能识别,结果是可以显示图片

地址修改了,还有一个外省的“市”“区”

接龙表单里我们收集了家长填写的省市区,

如何拆分成开来,并且能


'''
园园通小班孩子分班后补全信息
1.外省户口孩子更新地址(只更新地址,把待更新改掉)
3.Python模拟鼠标点击园园通按钮,进行分班
4.前期已经3101搜索过了。
'''


import openpyxl
import pyautogui
import time
import pyperclip
import pygetwindow as gw

# 1. 找到VSCode窗口(匹配标题含 Visual Studio Code)
vscode_wins = gw.getWindowsWithTitle("Visual Studio Code")
if not vscode_wins:
    print("未找到VSCode窗口,请先打开VSCode再运行!")
else:
    win = vscode_wins[0]
    # 自动最小化VSCode
    win.minimize()
    print("VSCode已自动最小化,你有5秒时间移动鼠标到目标位置")
    time.sleep(5)  # 等待5秒给你放鼠标

import random

# 随机休眠:1~3秒,带小数,模拟真人操作
def rand_sleep():
    t = random.uniform(2, 3)
    time.sleep(t)


# file_path = r"C:\Users\mhjg2\Desktop\20260805园园通小班分班\20260805班级信息表.xlsx"
# file_path = r"C:\Users\mhjg2\Desktop\20260805园园通小班分班\20260806小1班圆圆通信息补全(1).xlsx"
# file_path = r"C:\Users\mhjg2\Desktop\20260805园园通小班分班\20260806小3班圆圆通信息补全.xlsx"
# file_path = r"C:\Users\mhjg2\Desktop\20260805园园通小班分班\小4学生信息收集表_群收集.xlsx"
file_path = r"C:\Users\mhjg2\Desktop\20260805园园通小班分班\小5班圆圆通信息填写收集(1).xlsx"

wb = openpyxl.load_workbook(file_path)


# 读取表格
for sheet_name in wb.sheetnames:
    ws = wb[sheet_name]
    for row in ws.iter_rows(min_row=2, values_only=True):        # 从第二行开始读取姓名
    # for row in ws.iter_rows(min_row=21, values_only=True):    # 如果出问题,断了,从第X行读取孩子姓名
        if len(row) < 4:
            continue
        name = row[0]
        # name = row[4]        # 小四班姓名在第五列
        if not name or str(name).strip() == "":
            continue  
        # address = row[4] 
        # address = row[10]    # 小四班户籍详细地址在第11列  
        address = row[11]    # 小五班户籍详细地址在第12列  
        # class_name = row[1]
        # garden_name = row[1]
        # data_list.append([class_name, name])
        print(name)
        print(address)


         # 点击姓名栏,
        pyautogui.click(861,376)
        # 1. 复制指定文字到剪贴板
        # print('写入姓名:',name)
        pyperclip.copy(name)
        # 2. 模拟Ctrl+V粘贴
        pyautogui.hotkey("ctrl", "v")
        rand_sleep()  # 延迟2秒切换窗口

         # 搜索
        pyautogui.click(758,497)        
        rand_sleep()

         # 编辑
        pyautogui.click(1652,671)    
        time.sleep(3)

        # 模拟滚动到底部
        pyautogui.click(1652,671)  
        for _ in range(2):
            pyautogui.scroll(-1000)
        rand_sleep()
            # time.sleep(0.3)  # 每滚轮一下间隔0.3秒

       # 户籍地址点击三次
        for i in range(3):
            pyautogui.click(1404,473)
        rand_sleep()
        # 1. 复制指定文字到剪贴板
        # print('写入姓名:',name)
        pyperclip.copy(address)
        # 2. 模拟Ctrl+V粘贴
        pyautogui.hotkey("ctrl", "v")
        rand_sleep()  # 延迟2秒切换窗口

        # 下移到底部
        for _ in range(1):
            pyautogui.scroll(-1000)
        rand_sleep()


        # 确认,回到最初的界面
        pyautogui.click(1027,857)
        time.sleep(5)    # 保存时间长一点

# 自动最大化VSCode
win.maximize()
print("VSCode已自动最大化,程序结束")


最后一个小2班


'''
园园通小班孩子分班后补全信息
1.外省户口孩子更新地址(只更新地址,把待更新改掉)
3.Python模拟鼠标点击园园通按钮,进行分班
4.前期已经3101搜索过了。
'''


import openpyxl
import pyautogui
import time
import pyperclip
import pygetwindow as gw

# 1. 找到VSCode窗口(匹配标题含 Visual Studio Code)
vscode_wins = gw.getWindowsWithTitle("Visual Studio Code")
if not vscode_wins:
    print("未找到VSCode窗口,请先打开VSCode再运行!")
else:
    win = vscode_wins[0]
    # 自动最小化VSCode
    win.minimize()
    print("VSCode已自动最小化,你有5秒时间移动鼠标到目标位置")
    time.sleep(5)  # 等待5秒给你放鼠标

import random

# 随机休眠:1~3秒,带小数,模拟真人操作
def rand_sleep():
    t = random.uniform(2, 3)
    time.sleep(t)


# file_path = r"C:\Users\mhjg2\Desktop\20260805园园通小班分班\20260805班级信息表.xlsx"
# file_path = r"C:\Users\mhjg2\Desktop\20260805园园通小班分班\20260806小1班圆圆通信息补全(1).xlsx"
# file_path = r"C:\Users\mhjg2\Desktop\20260805园园通小班分班\20260806小3班圆圆通信息补全.xlsx"
# file_path = r"C:\Users\mhjg2\Desktop\20260805园园通小班分班\小4学生信息收集表_群收集.xlsx"
file_path = r"C:\Users\mhjg2\Desktop\20260805园园通小班分班\20260806小2班圆圆通信息补全模版.xlsx"

wb = openpyxl.load_workbook(file_path)


# 读取表格
for sheet_name in wb.sheetnames:
    ws = wb[sheet_name]
    for row in ws.iter_rows(min_row=11, values_only=True):        # 从第二行开始读取姓名
    # for row in ws.iter_rows(min_row=21, values_only=True):    # 如果出问题,断了,从第X行读取孩子姓名
        if len(row) < 4:
            continue
        name = row[0][2:]
        # name = row[4]        # 小四班姓名在第五列
        if not name or str(name).strip() == "":
            continue  
        address = row[4] 
        # address = row[10]    # 小四班户籍详细地址在第11列  
        # address = row[11]    # 小五班户籍详细地址在第12列  
        # class_name = row[1]
        # garden_name = row[1]
        # data_list.append([class_name, name])
        print(name)
        print(address)


         # 点击姓名栏,
        pyautogui.click(861,376)
        # 1. 复制指定文字到剪贴板
        # print('写入姓名:',name)
        pyperclip.copy(name)
        # 2. 模拟Ctrl+V粘贴
        pyautogui.hotkey("ctrl", "v")
        rand_sleep()  # 延迟2秒切换窗口

         # 搜索
        pyautogui.click(758,497)        
        rand_sleep()

         # 编辑
        pyautogui.click(1652,671)    
        time.sleep(3)

        # 模拟滚动到底部
        pyautogui.click(1652,671)  
        for _ in range(2):
            pyautogui.scroll(-1000)
        rand_sleep()
            # time.sleep(0.3)  # 每滚轮一下间隔0.3秒

       # 户籍地址点击三次
        for i in range(3):
            pyautogui.click(1404,473)
        rand_sleep()
        # 1. 复制指定文字到剪贴板
        # print('写入姓名:',name)
        pyperclip.copy(address)
        # 2. 模拟Ctrl+V粘贴
        pyautogui.hotkey("ctrl", "v")
        rand_sleep()  # 延迟2秒切换窗口

        # 下移到底部
        for _ in range(1):
            pyautogui.scroll(-1000)
        rand_sleep()


        # 确认,回到最初的界面
        pyautogui.click(1027,857)
        time.sleep(5)    # 保存时间长一点

# 自动最大化VSCode
win.maximize()
print("VSCode已自动最大化,程序结束")


同样取0列和4列,但是0列的姓名前面有两位数字学号,切片从索引2开始提取纯姓名。

三、修改后验证

现在5个小班的带填写户籍地址都修改了

我把园园通数据都导出来,看看有没有没有填写的。

r

后继问题:

1、补全户籍地址、居住地址中的省市区(大部分地址有只有路弄号)

2、修改小班外省户籍地址的(省、市、区)的正确地址(之前默认选第一个)

3、补全少数民族(实在很少,所以就把5个EXCEL打开,看看那几个是少数民族,手动复制名字单独修改保存)

小班只有两位少数民族

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿夏reasonsummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值