记录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)
相关推荐
用户9562562542910 小时前
跟做:Firecrawl 单页转 Markdown 再丢进沙箱总结
python·api
威哥爱编程10 小时前
模拟面试智能体开发实战 02:回答等半分钟,谁还愿意练?把服务端和流式输出搭起来
python·agent·harmonyos
威哥爱编程10 小时前
模拟面试智能体开发实战 01:面试挂了都不知道挂在哪?用 Python 给自己造一个随叫随到的 AI 面试官
python·agent·harmonyos
2601_9679801110 小时前
Python行情API量化 02:顺序拉 20 要 2 秒?并发批量把时间压到 0.5 秒
python·api·限流·并发·量化
伞伞悦读10 小时前
【第81期】特征缩放怎么选:标准化、MinMax 与 Robust 的原理、泄漏对照和完整实验
人工智能·python·深度学习·机器学习
新*11 小时前
从一段 WebSocket 代码聊开:bytes 不是 zlib、binaryType 决定一切,15MB 大消息的零拷贝优化
javascript·python·websocket·性能优化·blob·zlib·arraybuffer
卷无止境13 小时前
mathmodel-figure-templates 以及两个上手案例
后端·python
锋行天下14 小时前
服务器 Python 2.7 装不了 langgraph-cli?用本地生成 Dockerfile 曲线救国
人工智能·后端·python
一条大祥脚14 小时前
深入理解 PyTorch FlexAttention:从 Score Mod 到 Mask Mod 的稀疏加速之道
人工智能·pytorch·python·注意力机制·flex attention·可编程注意力
2601_9679801115 小时前
Python自动化办公:模块、库与样式调整教程
python·excel·自动化办公·openpyxl·样式调整