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
'programing' 카테고리의 다른 글
| "0이 아닌 종료 코드로 명령 실패"로 인해 빌드가 실패함 (0) | 2023.04.29 |
|---|---|
| 배치 파일에서 PowerShell 스크립트로 매개 변수 전달 (0) | 2023.04.29 |
| Azure AD에 응용 프로그램을 프로그래밍 방식으로 추가하는 방법은 무엇입니까? (0) | 2023.04.29 |
| Eclipse에서 한 번에 여러 콘솔 보기를 사용하여 각각 다른 콘솔을 표시할 수 있습니까? (0) | 2023.04.29 |
| 삽입 후 PyMongo에서 객체 ID를 얻는 방법은 무엇입니까? (0) | 2023.04.29 |