天天看點

python execl表格資料查詢

# -*- coding:utf-8 -*-
import openpyxl
from openpyxl import load_workbook

wb = load_workbook(filename='./1.xlsx')  # 表格所在位置,這裡示例是在項目根目錄下,是個名為“1.xlsx”的表格。僅支援.xlsx格式。
ws = wb.worksheets[0]
max_row = ws.max_row
max_col = ws.max_column


def value_by_col(value, col):
    """

    :param value: 查詢的值,需要與對應單元格資料類型一緻。如查整數用int,文本用str,小數用flote
    :param col: 要查詢的列号,從1開始,A對應1,B對應2,依次類推
    :return: NULL
    """
    # 針對指定列查詢
    re = False
    for row in range(max_row):
        use_cell = ws.cell(row + 1, col)
        if value == use_cell.value:
            print("已找到,在%s單元格"% use_cell.coordinate)
            re = True
    if re:
        pass
    else:
        print("未找到符合的單元格")


def value_by_row(value, row):
    """
    針對指定行查詢
    :param value: 要查詢的值,需要與對應單元格資料類型一緻。如查整數用int,文本用str,小數用flote
    :param row: 要查詢的行号,從1開始
    :return: NULL
    """
    re = False
    for col in range(max_col):
        use_cell = ws.cell(row, col + 1)
        # print(use_cell.value, type(use_cell.value))
        if value == use_cell.value:
            print("已找到,在%s單元格" % use_cell.coordinate)
            re = True
    if re:
        pass
    else:
        print("未找到符合的單元格")


def value_by_all(value):
    """
    針對execl全表查詢
    :param value: 要查詢的值,需要與對應單元格資料類型一緻。如查整數用int,文本用str,小數用flote
    :return: NULL
    """
    #
    re = False
    for col in range(max_col):
        for row in range(max_row):
            use_cell = ws.cell(row + 1, col + 1)
            if use_cell.value == value:
                re = True
                print("已找到,在%s單元格" % use_cell.coordinate)
    if re:
        pass
    else:
        print("未找到符合的單元格")


if __name__ == "__main__":
    # 根據需要調用對應的函數
    value_by_col('20190871540000317312', 6)  # 在第6列(即F列)查找
    value_by_row('20190871540000317312', 4)  # 在第4行查找
    value_by_all('20190871540000317312')  # 全表查找