excel類封裝需要提供以下功能:
1、打開表單
2、讀取標題
3、讀取所有的數據
4、指定單元格寫入數據(使用靜態方法,不要使用實例方法)
import openpyxl
class ExcelHandler:
def __init__(self, file):
# 初始化函數
self.file = file
def open_sheet(self, name): # 打開excel表
wb = openpyxl.load_workbook(self.file)
# 通過表單名獲取
sheet = wb[name]
return sheet
def read_title(self, sheet_name): # 讀取標題
# 調用open_sheet函數
sheet = self.open_sheet(sheet_name)
title = []
for i in sheet[1]:
# 將讀取到的值存入到title中
title.append(i.value)
return title
def read_data(self, sheet_name):
sheet = self.open_sheet(sheet_name)
# sheet.rows獲取所有行
rows = list(sheet.rows)
datas = []
# 數據從第二行開始,第一行是標題
for row in rows[1:]:
data = []
for cell in row:
data.append(cell.value)
# 使用zip將兩個列表組合成字典
data_dict = dict(zip(self.read_title(sheet_name), data))
datas.append(data_dict)
return datas
@staticmethod
def write_data(file, sheet_name, row, column, data): #寫入傳入了路徑,表單名,行,列,修改的內容等參數
wb = openpyxl.load_workbook(file)
sheet = wb[sheet_name]
sheet.cell(row, column).value = data
wb.save(file)
wb.close()
if __name__ == "__main__":
# 測試數據
excel = ExcelHandler(r"C:\Users\sky\Desktop\python\cases.xlsx")
print(excel.read_title("Sheet1"))
print(excel.read_data("Sheet1"))
excel.write_data(r"C:\Users\sky\Desktop\python\cases.xlsx", "Sheet1", 2, 1,"liuxing")
