programing

Excel 열의 데이터를 Python 목록으로 읽기

golfzon 2023. 4. 29. 10:07
반응형

Excel 열의 데이터를 Python 목록으로 읽기

저는 엑셀 2013의 데이터 열을 읽기 위해 파이썬 xlwings를 사용하고 있습니다.기둥.A숫자로 채워집니다.이 열을 파이썬 목록으로 가져오려면 다음과 같이 하십시오.py_list다음 코드가 있습니다.

import xlwings as xw

wb = xw.Book('BookName.xlsm')
sht = xw.Book('SheetName')
py_list = sht.range('A2:A40').value

열 데이터가 다음 위치에 채워지면 위의 코드가 작동합니다.A2:A40그러나 열 데이터는 계속 증가할 수 있습니다.데이터 증가 및 확장 가능성:A2:A46또는A2:A80마지막 행이 비어 있습니다.컴파일 시 이 열의 데이터 행 수는 알 수 없습니다.

데이터 범위를 읽을 수 있도록 마지막 행에서 빈 셀을 감지하도록 코드를 수정하려면 어떻게 해야 합니까?py_list?

xlwings 외에 다른 python 라이브러리를 사용하여 Excel 데이터를 읽을 수 있습니다.저는 파이썬 v3.6을 사용하고 있습니다.

저는 csv나 excel에서 파일을 읽는 것에 대해 이것을 많이 말하지만, 저는 사용할 것입니다.

import pandas as pd

df = pd.read_excel('filename.xlsm', sheetname=0) # can also index sheet by name or fetch all sheets
mylist = df['column name'].tolist()

대안은 엑셀에서 대신 OFFSET와 같은 것을 사용하여 동적 공식을 사용하는 것입니다.'A2:A40'아니면 아마도 이름이 붙은 범위?

이것이 오래된 질문이라는 것을 알지만, 당신은 또한 사용할 수 있습니다.

from openpyxl import load_workbook
wb = load_workbook("BookName.xlsx")  # Work Book
ws = wb.get_sheet_by_name('SheetName')  # Work Sheet
column = ws['A']  # Column
column_list = [column[x].value for x in range(len(column))]

주의:

  • Pandas는 훌륭한 도서관이지만, 목록에 엑셀 컬럼을 읽기 위해 설치하는 것은 과도한 IMHO입니다.

  • xlrd는 더 이상 유지 관리되지 않습니다.xlrd github 페이지에서

    참고:이 라이브러리에는 현재 활성 유지 관리자가 없습니다.대신 OpenPyXL을 사용하는 것이 좋습니다.

저는 이것이 엑셀의 전체 열에서 목록을 만드는 가장 쉬운 방법이며, 채워진 엑셀 셀만 사용합니다.팬더를 pd로 가져오기 numpy를 np로 가져오기

#Insert complete path to the excel file and index of the worksheet
df = pd.read_excel("PATH.xlsx", sheet_name=0)
# insert the name of the column as a string in brackets
list1 = list(df['Column Header 1']) 
list2 = list(df['Column Header 2'])

print(list1)
print(list2)

저는 xlwings 문서를 찾아봤지만, 이런 것을 찾지 못했습니다. 하지만 언제든지 이것을 시도할 수 있습니다.

temp = [x for x in xw.Range('A2:A200').value if x != None] #A200 just put a big number..

아니면 이걸 시도해 볼지 모르겠네요:

from itertools import takewhile
temp =[takewhile(lambda x: x != None, xw.Range('A2:A70').value)]
while True:
    try:
         next(temp)
    except StopIteration:
         break

2호선에서 처음에 저는 다음과 같은 것을 시도했습니다.

temp =[lambda x: x for x in xw.Range('D:D').values if x != None else exit()] #or to replace this with quit() but there is no option to break lambdas as far as I know

다른 옵션:

temp = iter(xw.Range('A:A').value)
list = []
a = next(temp)               #depending your first cell starts at row 1
while a != None:             #might want zeros or '' etc
    list.append(a)
    a = next(temp)

이 질문의 핵심은 열에 있는 행 수를 찾는 것입니다.A.

행의 수는 아래의 xlwings를 사용하여 이 단일 선으로 확인할 수 있습니다.

rownum = sht.range('A1').end('down').last_cell.row

해답을 얻으려면 API 설명서를 주의 깊게 읽어야 합니다.

http://docs.xlwings.org/en/stable/api.html#xlwings.Range

행 수가 확인되면 나머지를 쉽게 파악할 수 있습니다.

언급URL : https://stackoverflow.com/questions/45708626/read-data-in-excel-column-into-python-list

반응형