• 【Python】将多个工作簿中的数据按列合并到同一个工作表


    1.需求描述

    现在有三个工作表,如下:

    并且每个工作表中的内容如下:

    需要将这三个工作簿中的分数这一列合并到一起,最终实现效果如下图:

    2.实现代码

    # Author:Logan
    # Date:2020/6/2  9:58
    # IDE:PyCharm
    # version:Python 3.5
    
    import xlrd
    import xlwt
    from xlutils.copy import copy
    import os
    
    def create_excel(path, sheet_name):
        workbook = xlwt.Workbook()  # 新建一个工作簿
        workbook.add_sheet(sheet_name)  # 在工作簿中新建一个表格
        workbook.save(path)  # 保存工作簿
    
    def read_data(FileName):
        # 1.打开文件
        open_file = xlrd.open_workbook(FileName)
    
        # 2.读取第二列的内容(表中第一列索引值为0)
        st = open_file.sheet_by_index(0)
        data = [st.cell_value(i,1) for i in range(1, st.nrows)]
        # 3.将表名追加到列表作为第一个元素
        title = open_file.sheet_names()
        data = title + data
    
        return data
    
    def write_data(path, data):
        index = len(data) # 获取索引写入的行数
        workbook = xlrd.open_workbook(path) # 打开工作簿
        sheets = workbook.sheet_names()  # 获取工作簿中的所有表格
        worksheet = workbook.sheet_by_name(sheets[0])  # 获取工作簿中所有表格中的的第一个表格
        cols_old = worksheet.ncols  # 获取表格中已存在的数据的列数
    
        new_workbook = copy(workbook)  # 将xlrd对象拷贝转化为xlwt对象
        new_worksheet = new_workbook.get_sheet(0)  # 获取转化后工作簿中的第一个表格
        for i in range(0, index):
                new_worksheet.write( i, cols_old + 1, data[i])  # 追加写入数据
        new_workbook.save(path)  # 保存工作簿
    
    def get_file_name(file_dir):
        tmp_lst = []
        for root, dirs, files in os.walk(file_dir):
            for file in files:
                tmp_lst.append(os.path.join(root, file))
        return tmp_lst
    
    def main():
        DIR_NAME = r'D:	est\'
        create_excel(DIR_NAME + '合并.xls','汇总数据')
        print(DIR_NAME + '合并.xls')
        tmp_list = get_file_name(DIR_NAME + 'data\')
        for dir in tmp_list:
            data = read_data(dir)
            write_data(DIR_NAME + '合并.xls', data)
            print('------------'+ dir.split("\")[-1] + '数据写入成功!-----------' )
    
    if __name__ == '__main__':
        main()
    

    程序运行截图:

  • 相关阅读:
    甘超波:NLP五步脱困法
    甘超波:NLP换框法
    甘超波:NLP先跟后带
    甘超波:NLP瞬间亲和力
    甘超波:NLP回应与建议技巧
    甘超波:NLP复述
    甘超波:NLP新旧ABC觉察法
    甘超波:NLP潜意识和意识
    甘超波:NLP人际界线
    甘超波:NLP表象系统
  • 原文地址:https://www.cnblogs.com/OliverQin/p/13030955.html
Copyright © 2020-2023  润新知