本文用python中openpyxl庫,封裝成excel數據的讀寫方法
from openpyxl import load_workbook
from openpyxl.worksheet.worksheet import Worksheet
class ExcelHandler():
def __init__(self,file):
self.file=file
def open_sheet(self,name) ->Worksheet :
#表示此函數的返回值,是一個這樣的類型,函數注解
wb=load_workbook(self.file)#通過屬性傳遞
sheet=wb[name]
return sheet
def header(self,sheet_name):
'''獲取表頭'''
sheet=self.open_sheet(sheet_name)
headers=[]
for i in sheet[1]:
headers.append(i.value)
return headers
def read(self,sheet_name):
'''讀取所有數據'''
sheet=self.open_sheet(sheet_name)
rows=list(sheet.rows)#得到所有的數據,包括表頭
data=[]#存取所有行的數據
for row in rows[1:]:
row_data=[]#存取一行的數據
for cell in row:#取出單元格
row_data.append(cell.value)#把單元格的值存在一行的數據中
#列表轉字典,要和header zip
data_dict=dict(zip(self.header(sheet_name),row_data))
data.append(data_dict)#把一行的值存在放所有行的數據中
print(data)
return data
@staticmethod
def write(file,sheet_name,row,column,data):
wb=load_workbook(file)
sheet = wb[sheet_name]#獲取表單
cell = sheet.cell(row,column)#獲取單個單元格
cell.value = data#寫入值
wb.save(file)#保存
wb.close()
if __name__ == '__main__':
excel=ExcelHandler(r'D:\cases.xlsx')
sheet=excel.read('Sheet1')
