programing

Openpyxl - Python에서 Excel 파일에서 하나의 열만 읽는 방법은 무엇입니까?

powerit 2023. 4. 13. 21:14
반응형

Openpyxl - Python에서 Excel 파일에서 하나의 열만 읽는 방법은 무엇입니까?

스프레드시트에서 A열만 가져오고 싶습니다.아래 코드가 있는데 모든 열에서 꺼냅니다.

from openpyxl import Workbook, load_workbook

wb=load_workbook("/home/ilissa/Documents/AnacondaFiles/AZ_Palmetto_MUSC_searchterms.xlsx", use_iterators=True)
sheet_ranges=wb['PrivAlert Terms']

for row in sheet_ranges.iter_rows(row_offset=1): 
    for cell in row:
        print(cell.value)

openpyxl을 사용하여 하나 이상의 열을 읽는 경우 이전 답변에 대한 대안입니다.

import openpyxl

wb = openpyxl.load_workbook('origin.xlsx')
first_sheet = wb.get_sheet_names()[0]
worksheet = wb.get_sheet_by_name(first_sheet)

#here you iterate over the rows in the specific column
for row in range(2,worksheet.max_row+1):  
    for column in "ADEF":  #Here you can add or reduce the columns
        cell_name = "{}{}".format(column, row)
        worksheet[cell_name].value # the value of the specific cell
        ... your tasks... 

이게 도움이 됐으면 좋겠어요.

openpyxl 사용

from openpyxl import load_workbook
# The source xlsx file is named as source.xlsx
wb=load_workbook("source.xlsx")

ws = wb.active
first_column = ws['A']

# Print the contents
for x in xrange(len(first_column)): 
    print(first_column[x].value) 

내 생각에는 훨씬 더 간단하다.

from openpyxl import Workbook, load_workbook
wb = load_workbook("your excel file")
source = wb["name of the sheet"]
for cell in source['A']:
    print(cell.value)

나는 판다 도서관을 이용하는 것을 추천한다.

import pandas as pd
dataFrame = pd.read_excel("/home/ilissa/Documents/AnacondaFiles/AZ_Palmetto_MUSC_searchterms.xlsx", sheetname = "PrivAlert Terms", parse_cols = 0)

팬더가 불편하거나 어떤 이유로든 Openpyxl과 작업해야 하는 경우 코드 상의 오류는 첫 번째 열만 선택하지 않는 것입니다.각 행의 각 셀을 명시적으로 호출합니다.첫 번째 열만 사용하려면 각 행의 첫 번째 열만 가져옵니다.

for row in sheet_ranges.iter_rows(row_offset=1): 
    print(row[0].value)

사용하다ws.get_squared_range()반환되는 셀의 범위(예: 단일 열)를 정확하게 제어합니다.

다음은 간단한 기능입니다.

import openpyxl

def return_column_from_excel(file_name, sheet_name, column_num, first_data_row=1):
    wb = openpyxl.load_workbook(filename=file_name)
    ws = wb.get_sheet_by_name(sheet_name)
    min_col, min_row, max_col, max_row = (column_num, first_data_row, column_num, ws.max_row)
    return ws.get_squared_range(min_col, min_row, max_col, max_row)

openpyxl 라이브러리와 Python의 목록 통합 개념을 사용하여 다음을 수행합니다.

import openpyxl

book = openpyxl.load_workbook('testfile.xlsx')
user_data = book.get_sheet_by_name(str(sheet_name))
print([str(user_data[x][0].value) for x in range(1,user_data.max_row)])

이것은 꽤 놀라운 접근법이며 시도해 볼 가치가 있다.

ZLNK의 뛰어난 응답성을 이용하여 목록 이해를 사용하여 한 줄에 동일한 결과를 얻을 수 있는 이 함수를 만들었습니다.

def read_column(ws, begin, columns):
  return [ws["{}{}".format(column, row)].value for row in range(begin, len(ws.rows) + 1) for column in columns]

그런 다음 워크시트, 시작할 행 및 반환할 열의 첫 번째 문자를 전달하여 호출할 수 있습니다.

column_a_values = read_column(worksheet, 2, 'A')

열 A와 열 B를 반환하려면 콜이 다음과 같이 변경됩니다.

column_ab_values = read_column(worksheet, 2, 'AB')

이 질문에 답하기 위해 가입하는 것이 늦어질 수도 있다는 것을 알고 있습니다.하지만 적어도 내 대답은 다른 누군가가 해결할 수 있게 해줄지도 몰라.

시트의 열 값을 반복해야 합니다.제 의견으로는 다음과 같이 구현할 수 있습니다.

from openpyxl import load_workbook

wb = load_workbook("/home/ilissa/Documents/AnacondaFiles/AZ_Palmetto_MUSC_searchterms.xlsx", read_only=True)
sheet = wb['PrivAlert Terms']
for val in sheet.iter_rows(max_col=1):
        print(val[0].value)

iter_rows는 지정된 컬럼의 행을 루프합니다.다음 인수를 지정할 수 있습니다.iter_rows최소 열에서 최대 열까지max_row그리고 또max_col설정max_col=1여기서 컬럼의 모든 행을 루프합니다(컬럼은 지정된 최대값까지).스프레드시트의 첫 번째 열 값만 모두 가져옵니다.

마찬가지로 행의 모든 열(수평 방향)을 반복하려면iter_cols시작 행 및 종료 열 속성 지정

ZLNK 응답에서 업데이트된 답변:

import openpyxl
wb=openpyxl.load_workbook('file_name.xlsm')
first_sheet = wb.sheetnames
worksheet = wb[first_sheet[2]] # index '2' is user input

for row in range(2,worksheet.max_row+1):  
   for column in "E":  #Here you can add or reduce the columns
      cell_name = "{}{}".format(column, row)
      vv=worksheet[cell_name].value
       

언급URL : https://stackoverflow.com/questions/34754077/openpyxl-how-to-read-only-one-column-from-excel-file-in-python

반응형