Python使用openpyxl操作excel表格


一、openpyxl的使用

pip install openpyxl

第一步:打開工作簿(讀取Excel文件中所有的數據保存為工作簿對象)

workbook = openpyxl.load_workbook('cases.xlsx')

第二步:選中表單對象

sheet = workbook['login']

第三步:通過表單選中表格讀取數據

①讀取內容(第五行第四列)

data = sheet.cell(row=5,column=4)
printa(data.value) # 獲取內容用value方法

②寫入內容(保存才會生效)

sheet.cell(row=7,column=3,value='("Python","123456")')
# 寫入內容后,一定要保存才會生效
workbook.save('cases.xlsx')

③獲取最大行和最大列

# 最大行
sheet.max_row
# 最大列
sheet.max_column

④按行獲取所有的格子對象,每一行格子放入一個元組中

sheet.rows

*注意點:不要隨便在表格中敲空格

二、openpyxl的封裝

導包

import openpyxl

封裝

class ReadExcel(object):
    """操作Excl文件"""

    def __init__(self, fileName, sheetName):
        """
        初始化方法
        :param fileName: Excel文件名
        :param sheetName: 表單名
        """
        self.fileName = fileName
        self.sheetName = sheetName

    def open(self):
        """打開工作簿,選中表單"""
        self.wb = openpyxl.load_workbook(self.fileName)
        self.sh = self.wb[self.sheetName]

    def save(self):
        """保存工作簿對象的方法"""
        self.wb.save(self.fileName)
        self.wb.close()  # 這一行加不加關系不大,加了可以釋放內存

1、讀取數據

①將每條數據存儲成字典類型

    def read_data_dict(self):
        """讀取數據(將每條數據存儲成字典類型)"""
        # 打開工作簿
        self.open()
        # 通過rows獲取Excel文件中所有的行數據,然后把數據轉成列表
        rows = list(self.sh.rows)
        # 表頭
        title = []
        # 遍歷Excel文件中的第一行表頭信息
        for i in rows[0]:
            title.append(i.value)
        # 用例數據列表
        cases = []
        # 遍歷用例數據行
        for row in rows[1:]:
            # 定義一個列表存放每一行的數據
            data = []
            # 遍歷每一行的數據
            for r in row:
                data.append(r.value)
            # 把每一行的數據通過zip進行打包,然后轉成字典,存入到用例數據列表中
            case = dict(zip(title, data))
            cases.append(case)
        return cases

②將每條數據存儲成CaseData類對象類型

class CaseData(object):
    """保存用例數據類"""
    pass
    def read_data_obj(self):
        """讀取數據(將數據保存到CaseData類中)"""
        self.open()
        rows = list(self.sh.rows)
        # 表頭
        title = []
        # 遍歷Excel文件中的第一行表頭信息
        for i in rows[0]:
            title.append(i.value)
        # 定義用例列表,用來存放用例類列表
        cases = []
        # 遍歷用例數據行
        for row in rows[1:]:
            # 定義一個列表存放每一行的數據
            data = []
            # 遍歷每一行的數據
            for r in row:
                data.append(r.value)
            # 把每一行的數據通過zip進行打包,然后轉成字典,存入到用例數據列表中
            case = dict(zip(title, data))
            # 定義一個用例存放類對象
            case_obj = CaseData()
            for k, v in case.items():
                # 通過setattr()給對象添加屬性
                setattr(case_obj, k, v)
            # 把對象添加到列表中
            cases.append(case_obj)
        return cases

2、寫入數據

    def write_data(self, row, column, value):
        """
        寫入數據
        :param row: 行
        :param column: 列
        :param value: 數據
        """
        self.open()
        # 指定行列進行寫入數據
        self.sh.cell(row=row, column=column, value=value)
        # 保存
        self.wb.save(self.fileName)
        # 關閉
        self.wb.close()

**需要用到操作excel的時候可以直接進行調用,減少重復的代碼量。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM