Python处理Excel之openpyxl学习

目录

  • 一、openpyxl知识点总结
  • 二、openpyxl读取excel示例1--按行读取数据,并存储在列表中
  • 三、openpyxl读取excel示例2--按行读取数据,并存储在对象中
  • 四、openpyxl读取excel示例3--读取指定列的数据,并按行存储到列表中
  • 五、openpyxl读取excel示例4--读取指定列的数据,并按行存储到对象中

一、openpyxl知识点总结

常用的方法汇总:
(1)打开工作簿:wb = openpyxl.load_workbook(‘cases.xlsx’)
(2)选取表单:sh = wb[‘Sheet1’]
(3)读取第一行、第一列的数据:ce = sh.cell(row = 1,column = 1)
(4)按行读取数据:row_data = list(sh.rows)
(5)关闭工作薄:wb.close()

二、openpyxl读取excel示例1–按行读取数据,并存储在列表中

import openpyxl

class Case:
    pass
    
# 读取Excel数据的类
class ReadExcel:
    def __init__(self, excel_name, sheet_name):
        """
        初始化对象
        :param excel_name: 文件名 ---> str
        :param sheet_name: 表名 ---> str
        """
        # 打开文件
        self.wb = openpyxl.load_workbook(excel_name)
        # 获取sheet表
        self.sh = self.wb[sheet_name]

        def read_data_line_list(self):
        """
        按行读取数据,并存储在列表中
        :return:
        """
        # 将sheet表中所有行数据存储在列表,列表中每一个元素为1个元组,每一个元组代表1行的数据,元组中每一个元素为一个单元格对象
        rows_data = list(self.sh.rows)
        # print(rows_data)
        # 定义1个空列表来存储表头信息
        sheet_title = []
        for title in rows_data[0]:
            sheet_title.append(title.value)
        # print(sheet_title)
        # 定义1个空列表来存储所有行的数据信息
        sheet_case_data = []
        for row_data in rows_data[1:]:
            # 定义1个空列表来存储单行的数据信息
            data = []
            for cell in row_data:
                data.append(cell.value)
            # print(data)
            case_data = dict(list(zip(sheet_title, data)))
            sheet_case_data.append(case_data)
            # print(case_data)
        return sheet_case_data

三、openpyxl读取excel示例2–按行读取数据,并存储在对象中

    def read_data_line_obj(self):
        """
        按行读取数据,并存储在对象中
        :return:
        """
        rows_data = list(self.sh.rows)
        sheet_title = []
        for title in rows_data[0]:
            sheet_title.append(title.value)
        # 定义一个空列表用来存储数据
        cases = []
        for row_data in rows_data[1:]:
            # 定义1个空列表来存储单行的数据信息
            row_case_data = []
            # 定义1个对象,用来存储每一行的数据信息
            case_obj = Case()
            for cell in row_data:
                row_case_data.append(cell.value)
            case_data = list(zip(sheet_title, row_case_data))
            print(case_data)
            for index in case_data:
                setattr(case_obj, index[0], index[1])
            # 将每一个对象添加到列表中
            cases.append(case_obj)
        return cases

四、openpyxl读取excel示例3–读取指定列的数据,并按行存储到列表中

    def read_data(self, list1):
        """
        :param list1:为一个列表,传入的是指定读取数据的列,比如[1,2,3]
        每一行[1,2,3]列的数据,读取出来就作为一条元素,放在列表中
        :return:
        """
        # 获取最大的行数
        max_row = self.sh.max_row
        # print(max_row)
        cases = []
        # 定义1个空列表来存储表头信息
        title = []
        for row in range(1, max_row+1):
            if row != 1:
                # 定义1个空列表来存储按列读取的每一行的数据
                row_case_data = []
                for column in list1:
                    info = self.sh.cell(row, column).value
                    row_case_data.append(info)
                case = dict(list(zip(title, row_case_data)))
                cases.append(case)
            else:
                for x in list1:
                    title_info = self.sh.cell(row, x).value
                    title.append(title_info)
        return cases

五、openpyxl读取excel示例4–读取指定列的数据,并按行存储到对象中

    def read_data_obj(self, list_param):
        """
        :param list_param:
        :return:
        """
        sh_max_row = self.sh.max_row
        title = []
        cases = []
        for row in range(1, sh_max_row+1):
            if row != 1:
                data = []
                for column in list_param:
                    case_data_info = self.sh.cell(row, column).value
                    data.append(case_data_info)
                row_case_data = list(zip(title, data))
                # print(row_case_data)
                case_obj = Case()
                for i in row_case_data:
                    setattr(case_obj, i[0], i[1])
                cases.append(case_obj)
            else:
                for tit in list_param:
                    title_info = self.sh.cell(row, tit).value
                    title.append(title_info)
        return cases```

你可能感兴趣的:(Python学习,python,openpyxl)