记录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)
相关推荐
Thomas.Sir22 分钟前
第38课:TensorFlow|可视化工具TensorBoard全用法【日志写入、指标监控、网络可视化】
人工智能·python·tensorflow
SEO_juper31 分钟前
外贸多语言站最隐蔽的流量杀手:hreflang 错了,谷歌把德语页推给美国人(附审计脚本)
开发语言·前端·python·seo·独立站·谷歌优化
Metaphor69244 分钟前
快速合并 Word 文档【Python 指南】
python·word
JAVA老架构AI智能化1 小时前
如何高质量分块
人工智能·python
泡海椒1 小时前
告别反射低效:JQuick-Java ASM动态调用链性能优化实战
java·python·性能优化
2601_956319881 小时前
用示例和练习,把量化规则先练清楚
人工智能·python
满怀冰雪1 小时前
25-迁移学习入门:加载预训练模型并微调
人工智能·python·机器学习·迁移学习·paddle
2601_962284501 小时前
安卓APP UI自动化测试:Python + UiAutomator2 + pytest + pytest-html
python·pytest·uiautomator2·ui自动化测试·安卓app
2601_962078032 小时前
构建RESTful APIs:使用Python和Flask
python·flask·web开发·api设计·构建restfulapis
半亩码田2 小时前
C#转Python第4.5篇:单元测试:pytest vs xUnit/NUnit
python·单元测试·c#