class ReadWriteExcel():
    '''
    读写excel数据类
    '''
    def __init__(self):
        self.wb = Workbook()
        self.tables_names = []

    def readexcel(self):
        excel_datas = []
        wb = load_workbook(read_excel_name)
        # ws = wb.active    # # 等同于  ws = wb.get_active_sheet() #通过_active_sheet_index设定读取的表,默认0读第一个表
        sheet_names = wb.sheetnames  # 获取所有表名
        print('-----', sheet_names)
        for i in range(len(sheet_names)):  # 所有表
            wb = load_workbook(read_excel_name)
            # sheet_names = wb.sheetnames
            w_name = sheet_names[i]
            if w_name == table_name:    # 指定sheet
                # print('self.tables_names = ', self.tables_names)
                table_datas = {'%s' % w_name:[]}
                ws = wb[w_name]  # 读取表数据
                l_num = ws.max_column  # 最大列
                h_num = ws.max_row  # 最大行
                for i in range(1, h_num + 1):  # 行
                    actionName = ws.cell(row=i, column=10).value
                    if not actionName:
                        continue
                    line_data = dict()
                    for j in range(1, l_num + 1):
                        line_data[ws.cell(row=1, column=j).value] = ws.cell(row=i, column=j).value
                    print(len(line_data), line_data)
                    table_datas['%s' % w_name].append(line_data)
                excel_datas.append(table_datas)
                break
        return excel_datas

    def writeexcel(self, excel_datas):
        '''
        [[{'key': 'value'}, {'key': 'value'}, ]]
        :param excel_datas:
        :return:
        '''
        print('excel_datas = ', len(excel_datas), excel_datas)
        wb = Workbook()
        ws = wb.active
        for i in range(0, len(excel_datas)): # 几个表
            table_name = list(excel_datas[i].keys())[0]
            print('table_name = ', table_name)
            # 创建新表写入数据
            self.ws = self.wb.create_sheet("%s" % table_name, i)  # 插入到最开始的位置
            table_datas = excel_datas[i]
            print('table_datas = ', table_datas)
            for one_data in table_datas[table_name]: # 每张表每行数据
                # print('one_data = ',type(one_data), len(one_data), one_data)
            #     line_datas = []
            #     for v in one_data.values():
            #         line_datas.append(str(v))
                # 写入新表中
                self.ws.append([str(v) for v in one_data.values()])
        # 保存新文件
        self.wb.save(save_excel_name)```

更多推荐

python读写excel指定sheet