记录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)
相关推荐
2601_9578838437 分钟前
2026年9月:专业解决雷神笔记本维修难题
python·电脑
Omics Pro1 小时前
预测性虚拟细胞中显式机理算子
大数据·数据库·人工智能·python·算法·机器学习·自然语言处理
秋名RG1 小时前
Java历代LTS版本新特性详解(代码增强版)
java·开发语言·python
27669582921 小时前
youdao/有道翻译APP 算法协议分析
开发语言·前端·python·sign·youdao·有道翻译app算法·有道app协议请求
夏天拐跑了西瓜9 小时前
一文入门LangChain:从框架认知到构建你的第一个AI Agent
python·langchain·conda·agent
魔猴疯猿10 小时前
从0到1用Python开发第一个智能体
人工智能·python·深度学习·神经网络·机器学习
xiaoqi019511 小时前
机器学习因子分析实战:从量化特征到可视化决策
人工智能·python·机器学习
Escalating_xu11 小时前
【Python】基础语法(1):常量、变量、类型、输入输出与运算符
开发语言·python
happylifetree11 小时前
Python14:核心语法-数据存储与运算-字符串定义
python
hhb_61812 小时前
AIRAGDebug:一键定位RAG链路异常
人工智能·python·算法