python操作excel表格


  我們在寫測試用例的時候,是創建一個表格.xlsx,然后把各種條件加到這張表格中去,所以,如何對excel表格操作,是相當重要的一環,那么,接下來,這篇博客就直接教會大家如何通過python去處理平時工作中用到的測試用例表格,我們一步一步來,慢慢的給各位同學講明白。

  首先,給大家先補個基礎的常識,就是你對一個excel的了解有多少?看下圖所示:

一、excel操作三大對象

workbook 工作薄:一個excel文件會被加載為一個工作薄對象workbook
    form       表單:excel文件中,每個sheet表達會被加載成一個工作表對象sheet
   cell        單元格:工作表中的每一個格子就是一個單元格,即表格對象cell

好,先把這些基礎的知識先了解,因為,excel主要就是操作這三個對象workbook、sheet、cell

以下,我拿一段代碼舉例,在用python操作excel時,先要安裝一個openpyxl,如何安裝?

 安裝完成以后,開始建一個表格文件.xlsx,然后復制或者剪切到python的具體文件夾目錄下,以下是我自己隨意建的表格:

代碼如下:

import openpyxl

# 第一步:將excel文件加載到一個工作薄對象中
wb = openpyxl.load_workbook("abc.xlsx")
# 第二步:選擇文件中的表單
sh = wb["login"]
# 第三步:讀取內容 ,cell表示單元格
res = sh.cell(row=1, column=1)   # 第一行第一列
print(res.value)           # 打印出 111

 以上就是簡單的示例:讀取某個單元格的內容

 二、數據的寫入

(單獨用的不多,不算重點,了解即可)

關於excel數據的寫入,單獨用的不多,一般會和會面的讀取數據寫入數據一起結合用,現在只是單獨拿出來講解,先做個大概的了解,可以總結以下四步規律

第一步:將excel文件加載到一個工作薄對象中
  wb = openpyxl.load_workbook("文件名")
第二步:選擇文件中的表單
  sh = wb["表單名"]
第三步:往表格中寫入數據
  sh.cell(row=行, column=值, value='寫入的值')
第四步:保存
  wb.save("文件名")

注意:在往excel中,寫入數據的時候,文件不能處於一個打開的狀態,否則會報錯

import openpyxl

# 第一步:將excel文件加載到一個工作薄對象中
wb = openpyxl.load_workbook("abc.xlsx")
# 第二步:選擇文件中的表單
sh = wb["login"]
# 第三步:往表格中寫入數據
sh.cell(row=1, column=1, value='jack')
# 第四步:保存
wb.save("abc.xlsx")    # 打開表格看,111已經變為jack

三、數據的批量讀取

比如:給你一張表格,把表格的內容,一次性讀取出來,怎么辦?如何操作?如何用python來實現

import openpyxl
# 第一步:將excel文件加載到一個工作薄對象中
wb = openpyxl.load_workbook("yyy.xlsx")
# 第二步:選擇文件中的表單
sh = wb["login"]

res = list(sh.rows)
for item in res:
    for c in item:
        print(c.value, end="    ")
    print()   # 起着換行的作用

 四、excel用例數據讀取組裝成列表嵌套字典的格式

先給大家看一下這張表 testcases ,

 我們想把它讀取出來,轉化成開頭的那種列表中嵌套字典的模式,怎么來弄?有的同學要問,為什么要弄成那種格式,因為,要和ddt結合起來使用,轉化成這種格式:

 方便ddt的使用,只要轉化成這個列表中嵌套字典的格式,以后可以直接套用

import openpyxl
# 第一步:將excel文件加載到一個工作簿對象中
wb = openpyxl.load_workbook("testcases.xlsx")
# 第二步:選擇文件中的表單
sh = wb["login"]

res = list(sh.rows)
# 獲取第一行的單元格
title = []
# 遍歷第一行所有的單元格,將格子中的值添加到列表title中
for c in res[0]:
    title.append(c.value)

cases_data = []
# 遍歷除第一行之外所有的行
for row in res[1:]:
    data = []
    for c in row:
        data.append(c.value)
    item = dict(zip(title, data))
    cases_data.append(item)
print(cases_data)

 

 五、excel的封裝

import openpyxl


class Excel:
    def __init__(self, filename, sheet_name):
        self.filename = filename
        self.sheet_name = sheet_name

    def read_data(self):
        """讀數據"""
        # 第一步:將excel文件加載到一個工作簿對象中
        wb = openpyxl.load_workbook(self.filename)
        # 第二步:選擇文件中的表單
        sh = wb[self.sheet_name]
        res = list(sh.rows)
        # 獲取第一行的單元格
        title = []
        # 遍歷第一行所有的單元格,將格子中的值添加到列表title中
        for c in res[0]:
            title.append(c.value)
        cases_data = []
        # 遍歷除第一行之外所有的行
        for row in res[1:]:
            data = []
            for c in row:
                data.append(c.value)
            case = dict(zip(title, data))
            # print(case)
            cases_data.append(case)
        return cases_data

    def write_data(self, row, column, value):
        """寫數據"""
        # 第一步:將excel文件加載到一個工作簿對象中
        wb = openpyxl.load_workbook(self.filename)
        # 第二步:選擇文件中的表單
        sh = wb[self.sheet_name]
        sh.cell(row=row, column=column, value=value)
        wb.save(self.filename)

未完待續。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

 


免責聲明!

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



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