programing

openpyxl을 사용하여 특정 값의 셀이 포함된 행 찾기

minimums 2023. 7. 2. 19:11
반응형

openpyxl을 사용하여 특정 값의 셀이 포함된 행 찾기

나는 완전히 새로운 사람입니다.openpyxl그래서, 여러분이 상상할 수 있듯이, 저는 그것을 이용하려고 할 때 꽤 힘든 시간을 보내고 있습니다.

한 장만 포함된 Excel 보고서가 있습니다(호출된 문서).Sheet1)모든 셀에서 특정 문자열(이 경우 제품명 ABC)이 포함된 셀을 검색하고 싶습니다.

그런 다음 셀이 포함된 행에 있는 모든 셀의 내용을 복사하고 싶습니다.ABC제품명그리고 모든 셀을 변수에 할당합니다.

제가 달성하고자 하는 목표를 보다 잘 이해하기 위해 다음과 같은 예를 들어보겠습니다.

Example

그래서 이 경우에는 2, 4, 6 행의 셀만 복사합니다.ABC제품).

이미 비슷한 질문과 답변을 찾아봤지만 이해할 수 없습니다(Excel을 사용한 적이 없습니다).

이것을 위해 판다를 사용할 필요는 없습니다.

from openpyxl import Workbook
import openpyxl

file = "enter_path_to_file_here"
wb = openpyxl.load_workbook(file, read_only=True)
ws = wb.active

for row in ws.iter_rows("E"):
    for cell in row:
        if cell.value == "ABC":
            print(ws.cell(row=cell.row, column=2).value) #change column number for any cell value you want

당신이 이것을 하기 위해 openpyxl을 사용하는 것이 중요합니까?만약 그렇지 않다면 판다를 사용하는 것을 제안하고 싶습니다.

    import pandas as pd

    df = pd.read_excel("path_to_excel_file")
    df_abc = df[df["Products"] == "ABC"] # this will only contain 2,4,6 rows

그러면:

    for row in df_abc.iterrows():
        # do what you want with the row 
from openpyxl import load_workbook

wb = load_workbook("report.xlsx")
ws = wb.active

for row in ws.rows:
if row[4].value == "ABC":
    for cell in row:
        print(cell.value, end=" ")
    print()
wb = load_workbook("report.xlsx")
ws = wb.active

abc_rows=[]

for row in range(2,ws.max_row+1):
    if(ws[row][4]=='ABC'):
       abc_rows.append(row)

선택한 행에 개별적으로 액세스하려면 이 코드를 추가합니다.

i=1
abc_dict={}
for row in ws.values:
    if(i in abc_rows):
        (a,b,c,d,e,f,g,h,i,j,k,l)=row
         abc_dict[i]=row
    i=i+1  

선택한 행에 개별적으로 액세스하려면 다음을 사용합니다.

abc_modules[2]는 전체 두 번째 행을 튜플로 제공하고 abc_modules[2][0]는 첫 번째 셀 값을 제공합니다.abc_messages[2][11]까지 구문 분석하여 선택한 행의 각 셀을 개별적으로 가져올 수 있습니다.

언급URL : https://stackoverflow.com/questions/51800122/using-openpyxl-to-find-rows-that-contain-cell-with-specific-value

반응형