记录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)
相关推荐
工艺资源1 小时前
外贸工艺品设计参考平台众多,哪家专业值得了解
人工智能·python
无糖冰可乐211 小时前
安装wsl2,并链接Windows上的vscode运行项目
pytorch·vscode·python·pip
汤米粥2 小时前
Python爬虫中Xpath用法之——normalize-space()
开发语言·python
想会飞的蒲公英2 小时前
回归模型怎样评估:MAE、MSE、RMSE 和 R²
人工智能·python·机器学习·数据分析·回归
henrylin99992 小时前
Quant Agent 完整系统规格
python·量化
三川6982 小时前
Tkinter库的学习记录10-Message与Messagebox
python
吃饱了得干活2 小时前
别只会传 temperature!一文挖透 LangChain 模型配置:Profile、全参数与运行时动态覆盖
python·langchain