• python-Excel读取-合并单元格读取


    python-Excel读取-合并单元格读取(后续会补充python-Excel写入的部分

    1. python读取Excel单元格

    代码包含读取Excel中数据,以及出现横向合并单元格,以及竖向合并单元格的内容。英文注释标注了函数的功能,后又补充了部分中文注释。

    合并单元格的函数通用,可以直接复制拿走,传入的参数为Excel某sheet表中的数据。

    两个列表合并为一个字典函数list_dic(list1,list2)也可以直接复制拿走,传入的参数为两个列表,list1准备作为key,list2准备作为value,key和value位置一一对应。

    __author__ = 'sitong'
    # !_*_coding:utf-8_*_
    import xlrd
    apply_dic = []
    def get_excel():
        with xlrd.open_workbook(r'D:325.xlsx') as workbook :
            name_sheets = workbook.sheet_names() #获取Excel的sheet表列表,存储是sheet表名
            for index in name_sheets: #for 循环读取每一个sheet表的内容
                sheet_info = workbook.sheet_by_name(index) #根据表名获取表中的所有内容,sheet_info也是列表,列表中的值是每个单元格里值
                first_line = sheet_info.row_values(0) #获取首行,我这里的首行是表头,我打算用表头作为字典的key,每一行数据对应表头的value,每一行组成一个字典
                values_merge_cell = merge_cell(sheet_info) #这里是调用处理合并单元格的函数
                for i in range(1, sheet_info.nrows): #开始为组成字典准备数据
                    other_line = sheet_info.row_values(i)
                    for key in values_merge_cell.keys():
                        if key[0] == i:
                            other_line[key[1]] = values_merge_cell[key]
                    #print(other_line)
                    dic = list_dic(first_line,other_line)  #调用组合字典的函数,传入key和value,字典生成
                    apply_dic.append(dic)
                return apply_dic
    
    def list_dic(list1,list2):
        '''
        two lists merge a dict,a list as key,other list as value
        :param list1:key
        :param list2:value
        :return:dict
        '''
        dic = dict(map(lambda x,y:[x,y], list1,list2))
        return dic
    
    def merge_cell(sheet_info):
        '''
        #handle Merge transverse cells and handle Merge Vertical Cells, assign empty cells,
        :param rlow:row, include row exclusive of row_range
        :param rhigh:row_range
        :param clow:col, include col exclusive of col_range
        :param chigh:col_range
        :param sheet_info:object of sheet
        :return:dic contain all of empty cells value
        '''
        merge = {}
        merge_cells = sheet_info.merged_cells
        for (rlow, rhigh, clow, chigh) in merge_cells:
            value_mg_cell = sheet_info.cell_value(rlow, clow)
            if rhigh-rlow == 1:
                # Merge transverse cells
                for n in range(chigh-clow-1):
                    merge[(rlow, clow+n+1)] = value_mg_cell
            elif chigh-clow == 1:
                # Merge Vertical Cells
                for n in range(rhigh-rlow-1):
                    merge[(rlow+n+1, clow)] = value_mg_cell
        return merge
    
    if __name__ == '__main__':
        get_excel()
  • 相关阅读:
    yum 本地 网络 openstack
    docker 负载均衡
    tomcat + nginx 负载均衡 动静分离 session会话配置
    K8S Ingress 之 traefik-ingress-controller
    CentOS7安装和配置rsync+inotify
    DAS,NAS,SAN在数据库存储上的应用
    inotify+rsync实现实时同步
    NFS网络文件系统
    CentOS7下rsync服务的基本详解和使用
    LVM--逻辑卷管理
  • 原文地址:https://www.cnblogs.com/sitongyan/p/10613814.html
Copyright © 2020-2023  润新知