Openpyxl--python Excel 处理库

  1. 安装:python -m pip install openpyxl

  2. 创建新的表格:wb = openpyxl.Workbook()

  3. 加载已有表格:wb = openpyxl.load_workbook(“表格路径”)

  4. 创建sheet:ws = create_sheet(“sheet_name”)

  5. 查询现有sheet:wb.get_sheet_names() #返回一个存有所有sheet name的列表
    也可wb.sheetnames

  6. 根据名称加载已有sheet:ws = wb.get_sheet_by_name(“sheet_name”)
    也可ws = wb[“sheet_name”]

  7. 修改sheet name:ws.title(“new_sheet_name”)

  8. 获取某列:ws[“A”]

  9. 获取列的值:cell.column #cell代表一个单元格
    获取行的值:cell.row
    将“1”列转为字母“A”列:openpyxl.utils.cell.get_column_letter(cell.column)

  10. 写入:
    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]) #写入多个单元格

  11. 读取:
    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)
发布了16 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_38308549/article/details/99542608