记录xls表格提取信息

记录从系统下载来的入学申请表,提取家长信息。获取联系方式,以备不时之需。

实现以下需求:

1、仅提取关键信息,学生基本情况,家长基本情况

2、关键信息整合成TXT文件

3、文件名混乱,结合花名册,复制xls文件到新路径,以学号和名字的方式重命名。

python 复制代码
import xlrd
from openpyxl import load_workbook
import os
import shutil


def read_all_xls(file_path):
    """
    读取xls文件全部内容,返回字典:{工作表名: 表格二维列表}
    """
    workbook = xlrd.open_workbook(file_path)
    all_sheets_data = {}

    for sheet_name in workbook.sheet_names():
        sheet_ = workbook.sheet_by_name(sheet_name)
        sheet_data = []
        for row_idx in range(sheet_.nrows):
            row_values = sheet_.row_values(row_idx)
            sheet_data.append(row_values)
        all_sheets_data[sheet_name] = sheet_data

    workbook.release_resources()
    return all_sheets_data


def write_txt_func_(file_name_):
    search_num_list_ = [5, 31, 18, 24]  # ["姓名", '房产类别', '关 系']  # 5,31,18,24这几行往后数5行都是重要信息
    save_i_list_ = []  # 要保存的信息放在此,有空值
    output_list_ = []  # 要保存的信息放在此,无空值
    try:
        data = read_all_xls(file_name_)
        for sheet, table in data.items():
            # print(f"===== 工作表:{sheet} =====")
            id_ = data_.index(sheet) + 1  # 学生学号
            for i in search_num_list_:
                for j in range(5):
                    save_i_list_.append(table[i+j])

            for inner_list_ in save_i_list_:
                new_lst = [x for x in inner_list_ if x is not None and str(x).strip() != '']  # 去除列表空值
                output_list_.append(new_lst)

            with open(f"{id_} {sheet}.txt", "w", encoding="utf-8") as f:  # sheet为学生姓名
                for item in output_list_:
                    f.write(f"{item}\n")
                    f.write("\n")
        return f"{id_} {sheet}"

    except FileNotFoundError:
        print(f"错误:找不到文件 {file_name_},请检查文件路径是否正确!")
    except Exception as e:
        print(f"读取失败:{str(e)}")


if __name__ == "__main__":
    wb = load_workbook("花名册.xlsx", data_only=True)
    ws = wb.active
    data_ = [row[0] for row in ws.iter_rows(values_only=True)]

    out_dir = "output"
    os.makedirs(out_dir, exist_ok=True)  # 1. 创建output文件夹,不存在则新建

    for i in range(39):
        name_ = write_txt_func_(f'入学申请表20250830 ({i+1}).xls')
        dst_path = os.path.join(out_dir, f"{name_}.xls")
        shutil.copy2(f'入学申请表20250830 ({i+1}).xls', dst_path)
相关推荐
一直走下去-明44 分钟前
简单的http抓包解包完整代码
开发语言·python
雷帝木木1 小时前
数据湖与数据仓库:从理论到实践
人工智能·python·深度学习·机器学习
数字化转型分享点滴1 小时前
机加工车间上线 SH‑AIOT 物联网会遇到哪些常见实施难点
python·物联网
0566462 小时前
agent学习——流式响应与文本切分
网络·python·学习
OPEN-F2 小时前
Python进阶教程:正则表达式进阶与文本处理
开发语言·python·正则表达式
新网企兴2 小时前
2026年陕西做GEO推广,找新网企兴解决获客难题
python·搜索引擎
青 春 记 忆2 小时前
LeetCode 142. 环形链表 II|Python 解法详解
python·leetcode·链表
for_ever_love__2 小时前
python基础语法学习: 面向对象的三大特性
开发语言·python·学习
Spider赵毅3 小时前
Python爬虫踩坑实录:BeautifulSoup使用中的高频问题排查
爬虫·python·beautifulsoup
怪奇云呼军4 小时前
知识库也会注入指令?闪电智能VoiceAgent 如何防住 Prompt Injection
人工智能·python·算法·云计算·音视频