-
安装:python -m pip install openpyxl
-
创建新的表格:wb = openpyxl.Workbook()
-
加载已有表格:wb = openpyxl.load_workbook(“表格路径”)
-
创建sheet:ws = create_sheet(“sheet_name”)
-
查询现有sheet:wb.get_sheet_names()
#返回一个存有所有sheet name的列表
也可wb.sheetnames -
根据名称加载已有sheet:ws = wb.get_sheet_by_name(“sheet_name”)
也可ws = wb[“sheet_name”] -
修改sheet name:ws.title(“new_sheet_name”)
-
获取某列:ws[“A”]
-
获取列的值:cell.column
#cell代表一个单元格
获取行的值:cell.row
将“1”列转为字母“A”列:openpyxl.utils.cell.get_column_letter(cell.column) -
写入:
ws[‘A1’] = 1 #写入数字
ws[‘A1’] = “你好” #写入中文(unicode中文也可)
ws[‘A1’] = datetime.datetime.now() #写入一个当前时间
ws[‘A1’] =time.strftime("%Y年%m月%d日 %H时%M分%S秒",time.localtime())
ws.append([1, 2, 3]) #写入多个单元格 -
读取:
ws[‘A1’].value #读取A1单元格的值
ws[‘A’] #获取A列的数据
ws[1] #获取第一行数据
例:对比两个表格中某列的值是否相同,如果相同则copy其他列的值
import openpyxl, time, os, sys
class vlooktest():
colvalue = {}
def log(self,text):
path = os.getcwd()
t = time.strftime("%m-%d %H:%M:%S ")
print(t+text)
f = open(path + "/log.txt", "a+")
f.write(t+text+'\n')
f.close()
def getSheet(self, excel):
wb = openpyxl.load_workbook(excel)
sheets = wb.get_sheet_names()
sheet = ""
comcol = ""
for sheett in sheets:
if "Test Plan" in sheett:
sheet = wb.get_sheet_by_name(sheett)
for cell in sheet[1]:
if cell.value == "Test ID":
comcol = cell.row
return sheet, comcol
def readlines(self, excel, wriIndex):
wb = openpyxl.load_workbook(excel)
sheets = wb.get_sheet_names()
sheetname, comIndex = self.getSheet(excel)
# print(sheets)
if sheetname:
sheet = wb.get_sheet_by_name(sheetname)
for cell in sheet[comIndex]:
if cell.value:
row = cell.row
if row>1:
self.colvalue[cell.value] = sheet[wriIndex+str(row)].value
else:
self.log("can not find the "+sheetname)
def writeline(self,excel, wriIndex):
# print(self.colvalue)
wb = openpyxl.load_workbook(excel)
sheets = wb.get_sheet_names()
sheetname, comIndex = self.getSheet(excel)
if sheetname:
sheet = wb.get_sheet_by_name(sheetname)
for cell in sheet[comIndex]:
if cell.value in self.colvalue.keys():
row = cell.row
self.log(cell.value +" done!")
# print(self.colvalue[cell.value])
sheet[wriIndex+str(row)] = self.colvalue[cell.value]
wb.save(excel)
self.log("successful")
else:
self.log("can not find the sheet")
if __name__ == "__main__":
vlooktest = vlooktest()
comexcel = input("please input the referenced excel:")
wricol1 = input("please input the referenced write column:")
wriexcel = input("please input the objective excel:")
wricol2 = input("please input the objective write column:")
vlooktest.readlines(comexcel, wricol1)
vlooktest.writeline(wriexcel, wricol2)