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

一、背景需求

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

为了取消标红,

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

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

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

二、数据收集

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

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

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

我用接龙管家做了一套

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

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

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

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

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

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

复制整列"学号+姓名"

打开接龙管家模版

设置名单

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

三、表单下载

组长速度最快

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

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

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

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"

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班老师也很快发来了接龙表单

表单路径修改一下

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"

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能不能识别,结果是可以显示图片

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

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

如何拆分成开来,并且能

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班

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园园通小班分班\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打开,看看那几个是少数民族,手动复制名字单独修改保存)

小班只有两位少数民族

相关推荐
一点一木2 小时前
Seed Evolving 深度测评:我用它造了一个 AI 出题工具
人工智能·python·github
abbgogo3 小时前
OSPF动态路由协议
开发语言·php
en.en..3 小时前
C 语言嵌入式事件驱动状态机完整教程(枚举配套)
c语言·开发语言
阿童木写作3 小时前
跨境卖家效率翻倍,跨马翻译批量图片翻译工具实测
人工智能·python
鹿鹿学长3 小时前
2026国赛报名季:从组委会第一次通知到各校8月报名通知,赛程报名评奖官方口径一次讲清
python·自动化
Tim_103 小时前
【C++】024、new[]与delete[]配对使用
java·开发语言
C++、Java和Python的菜鸟3 小时前
第15章 项目部署(Docker)
python
风之清扬3 小时前
AI agent学习之一基础知识
人工智能·python·学习
Jay-r3 小时前
极简博客搭建(精简版):textlog + GitHub Pages
python·github·教程·集成学习·博客网站·技术教程·自我成长
Albart5753 小时前
【已解决】IndexError_ list index out of range 列表索引越界 全套根治方案
python·indexerror·列表索引越界·python 报错解决·python 排错